geloescht_KFCEmbryo Geschrieben 19. August 2008 Geschrieben 19. August 2008 Hallo, ich habe folgendes Problem: Ich habe eine Verzeichnisstruktur. In dieser Verzeichnisstruktur sind, mehrere unterschiedliche Dateien mit dem gleichen Dateinamen vorhanden. Jetzt kopiere ich diese Dateien, ausgewählt nach den in der Schleife stehenden Kriterien, in einen neues Verzeichnis (Ordner). Die Verzeichnisstruktur wird nicht übernommen was bedeutet, dass alle Dateien in dem gleichen Verzeichnis (Ordner) liegen. Es muss verhindert werden, dass die Dateien sich überschreiben. Es sind ja nur die gleichen Namen aber nicht dieselben Dateien. Es muss also nach jedem kopieren überprüft werden ob der vorhandene Dateiname existiert wenn ja soll eine Nummer, beginnend bei 1, angehangen werden. Alternativ einfach kopieren. Beispiel: Es gibt in einer Verzeichnisstruktur 2 Ordner. Beide Ordner enthalten die Dateien mit dem Namen, Rechnung-01.02.08. Nun werden diese Dateien in den Ordner 2008 kopiert. Normalerweise würden sie überschrieben. Ich möchte aber am Ende in dem Ordner 2008 2 Dateien mit den Namen, Rechnung-01.02.081 und Rechnung-01.02.08. Bei 3, 4, u.s.w. gleicher Dateinamen soll das selbe Prinzip angewandt werden. Danke. Gruß Zitieren
Aiun Geschrieben 19. August 2008 Geschrieben 19. August 2008 dein Problem ist ? du weist nicht wie du ... was ? du hast bisher ? von welcher Programmiersprache oder Umgebung (OS) sprichst du ? evtl. ein Quellcodeauszug ? if(file_exist(..)) skip(); else copy(); Wie man Fragen richtig stellt: eine Anleitung wie man Fragen erfolgreich in Usenet, Mailing Listen und Webforen stellt. Zitieren
geloescht_KFCEmbryo Geschrieben 19. August 2008 Autor Geschrieben 19. August 2008 Hallo, ich denke welches Problem ich habe dürfte in meiner Frage klar werden. Damit schließe ich das Beispiel ein. Ich habe das Problem, dass Dateien mit gleichem Dateinamen die in einen Ordner kopiert werden überschrieben werden. Das sollen sie aber nicht. Sie sollen umbenannt werden und dann kopiert werden. „Es gibt in einer Verzeichnisstruktur 2 Ordner. Beide Ordner enthalten die Dateien mit dem Namen, Rechnung-01.02.08. Nun werden diese Dateien in den Ordner 2008 kopiert. Normalerweise würden sie überschrieben. Ich möchte aber am Ende in dem Ordner 2008 2 Dateien mit den Namen, Rechnung-01.02.081 und Rechnung-01.02.08. Bei 3, 4, u.s.w. gleicher Dateinamen soll dasselbe Prinzip angewandt werden.“ Ich weiß nicht wie ich den Dateinamen um ein Zeichen (Ziffer) erweitern kann. Jeder Dateinamen soll um eine Zahl beginnende bei eins erweitert werden, solang bis der kopier Vorgang beendet ist. Konkret: Bis die Bedingung in der "For-Schleife" nicht mehr zu trifft. Was ich bisher habe: for /f "delims=" %%a in ('dir /b/s /O:D C:\steuern\*%2000%?????????????????????.tif ') do ( xcopy "%%a" "C:\Dokumente und Einstellungen\name\Eigene Dateien\2000-2003*.tif" /i/c/y ) Um was sich handelt steht in dem Namen meines Thema „Batch“. Diese „.bat“ Datei soll auf Windows XP laufen. Vereinfacht könnte man auch sagen: Jeder kopierten Datei muss eine Zahl anghängt werdem beginnend bei "1" endend bei n (Wobei "n" die Anzahl der Schleifen durchläufe ist). Allerdings muss der Dateinamen bestehend bleiben, die Zahl soll nur angehängt werden. for /f "delims=" %%a in ('dir /b/s /O:D C:\steuern\*%2000%?????????????????????.tif ') do ( xcopy "%%a" "C:\Dokumente und Einstellungen\name\Eigene Dateien\2000- 2003*.tif" /i/c/y >> Hier eine Zeile die dem Dateinamen die Zahl „i“ anhängt. Ich hoffe es ist jetzt verständlicher. Ich bedanke mich schon einmal. Gruß Zitieren
Thombo Geschrieben 22. September 2008 Geschrieben 22. September 2008 Evtl. hilft dir das weiter: %~i - expands %i removing any surrounding quotes (") %~fi - expands %i to a fully qualified path name %~di - expands %i to a drive letter only %~pi - expands %i to a path only %~ni - expands %i to a file name only %~xi - expands %i to a file extension only %~si - expanded path contains short names only %~ai - expands %i to file attributes of file %~ti - expands %i to date/time of file %~zi - expands %i to size of file %~$PATH:i - searches the directories listed in the PATH environment variable and expands %i to the fully qualified name of the first one found. If the environment variable name is not defined or the file is not found by the search, then this modifier expands to the empty string The modifiers can be combined to get compound results: %~dpi - expands %i to a drive letter and path only %~nxi - expands %i to a file name and extension only %~fsi - expands %i to a full path name with short names only %~dp$PATH:i - searches the directories listed in the PATH environment variable for %i and expands to the drive letter and path of the first one found. %~ftzai - expands %i to a DIR like output line gefunden bei: Batch files - The FOR command: Windows NT 4/Windows 2000 Syntax In Verbindung mit "&&" sollte da was machbar sein. Befehl1.cmd && Befehl2.cmd -> Führe Befehl2.cmd aus, wenn Befehl1.cmd mit Errorlevel 0 beendet wurde. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.