Batch, wechselnden Dateinamen kopieren
Ich habe eine Batch bei der die Datei (...)\Erstauftr„ge\C%Zahl%* kopiert werden soll, es werden jedoch alle Ordner aus dem Ordner Erstaufträge kopiert!
Hallo liebes Forum
Ich habe folgende Batch
Bei der möchte ich das nur zum Beispiel der Ordner "C1170 blablblaalbalbala" kopiert wird.
Dabei steht %Zahl% für 1170 und "blablblaalbalbala" für "*".
Es werden dabei jedoch alle Dateien aus dem Ordner Erstaufträge kopiert, und nicht nur der gewünschte.
Was mache ich falsch?
MfG Valume
Hallo liebes Forum
Ich habe folgende Batch
for /f "delims=| " %%i in ('findstr "|" "I:\EDV\180 Projekte\Umstellung Filemaker\Auftragseingang Servax\Ordnerkopie.txt"') do set "Zahl=%%i"
if %Zahl%==MaxvonEANummer exit
xcopy "I:\SERVAX\Servax\ST\Erstauftr„ge\C%Zahl%*" "I:\SERVAX\Servax\ST\Gesicherte Erstauftr„ge\" /E
Bei der möchte ich das nur zum Beispiel der Ordner "C1170 blablblaalbalbala" kopiert wird.
Dabei steht %Zahl% für 1170 und "blablblaalbalbala" für "*".
Es werden dabei jedoch alle Dateien aus dem Ordner Erstaufträge kopiert, und nicht nur der gewünschte.
Was mache ich falsch?
MfG Valume
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 113507
Url: https://administrator.de/contentid/113507
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
14 Kommentare
Neuester Kommentar
Hallo Valume91!
Sieht so aus, als wäre
Absichern könntest Du das etwa so:
Wofür steht eigentlich "MaxvonEANummer"?
Grüße
bastla
Sieht so aus, als wäre
%Zahl%
leer - damit würde dann tatsächlich "C*" kopiert ...Absichern könntest Du das etwa so:
set Zahl=
for /f "delims=| " %%i in ('findstr "|" "I:\EDV\180 Projekte\Umstellung Filemaker\Auftragseingang Servax\Ordnerkopie.txt"') do set "Zahl=%%i"
if not defined Zahl goto :eof
if %Zahl%==MaxvonEANummer goto :eof
xcopy "I:\SERVAX\Servax\ST\Erstauftr„ge\C%Zahl%*" "I:\SERVAX\Servax\ST\Gesicherte Erstauftr„ge\" /E
Grüße
bastla
Aufgrund des "\C" am Ende des Pfades kann ich mir eigentlich nicht vorstellen, dass Dateien bzw Ordner, die nicht mit "C" beginnen, kopiert werden ...
... anyhow: Versuch es mal so:
Das "echo" ist dazu da, die Kopierbefehle (sollte ja eigentlich nur einer werden) anzuzeigen ...
Grüße
bastla
... anyhow: Versuch es mal so:
for /f "delims=" %%i in ('dir /b /ad "I:\SERVAX\Servax\ST\Erstauftr„ge"^|findstr /b "C%Zahl%"') do echo xcopy "I:\SERVAX\Servax\ST\Erstauftr„ge\%%i" "I:\SERVAX\Servax\ST\Gesicherte Erstauftr„ge\" /E
Grüße
bastla
Es soll auch kein Fehler, sondern ein Befehl der Art
angezeigt werden (und kopiert wird sowieso nix, weil der Kopierbefehl nur angeschrieben, aber nicht ausgeführt wird).
Falls Du ein "echo off" am Beginn des Batches verwendest, ändere es vorübergehend auf "echo on" - damit werden alle Befehle vor ihrer Ausführung angezeigt. Soferne Du daraus nichts ablesen kannst, poste bitte (unter Verwendung der -Formatierung) die entsprechenden Zeilen.
Grüße
bastla
xcopy "I:\SERVAX\Servax\ST\Erstauftr„ge\C1170" "I:\SERVAX\Servax\ST\Gesicherte Erstauftr„ge\" /E
Falls Du ein "echo off" am Beginn des Batches verwendest, ändere es vorübergehend auf "echo on" - damit werden alle Befehle vor ihrer Ausführung angezeigt. Soferne Du daraus nichts ablesen kannst, poste bitte (unter Verwendung der -Formatierung) die entsprechenden Zeilen.
Grüße
bastla
Ändere die "Kopier"-Zeile auf
Soferne es sicher ist, dass nach der "Zahl" im Ordnernamen ein Leerzeichen folgt, wäre die folgende Zeile noch exakter (damit würde verhindert, dass zB auch "C11704" kopiert wird):
Ansonsten: Schön, dass es funktioniert, aber seltsam bleibt die Sache dennoch ...
Grüße
bastla
for /f "delims=" %%i in ('dir /b /ad "I:\SERVAX\Servax\ST\Erstauftr„ge"^|findstr /b "C%Zahl%"') do echo xcopy "I:\SERVAX\Servax\ST\Erstauftr„ge\%%i" "I:\SERVAX\Servax\ST\Gesicherte Erstauftr„ge\%%i\" /E
for /f "delims=" %%i in ('dir /b /ad "I:\SERVAX\Servax\ST\Erstauftr„ge"^|findstr /b /c:"C%Zahl% "') do echo xcopy "I:\SERVAX\Servax\ST\Erstauftr„ge\%%i" "I:\SERVAX\Servax\ST\Gesicherte Erstauftr„ge\%%i\" /E
Grüße
bastla