Dies ist eine leichte Arbeit - ich weiß, dass Sie einen anderen Namen haben wollten, aber ich habe mich gefragt, ob dies für Sie funktionieren wird.
Ich würde vorschlagen, dass Sie beim Kopieren den Namen in "Ordnername.Dateiname.csv" ändern.
Verwenden Sie so etwas wie
echo f | xcopy /f /y srcfile destfile
BEARBEITEN
Ich habe es einige Stunden lang versucht, ich glaube nicht, dass das, was Sie wollen, mit der CMD-Eingabeaufforderung oder den Bat-Dateien möglich ist.
Das habe ich
set sDir=C:\Documents and Settings\drook\Desktop
set dDir="C:\Documents and Settings\drook\Desktop\Folder\"
cd C:\Documents and Settings\drook\Desktop\
FOR /F %%a in ("*.txt") DO (
xcopy "%%a" "C:\Documents and Settings\drook\Desktop\Folder\"
cd\
cd C:\Documents and Settings\drook\Desktop\Folder\
ren "%%a" "newName-%dir%.txt"
cd\
cd C:\Documents and Settings\drook\Desktop\
)
pause
Das Umbenennen schlägt fehl, da die Variable ignoriert wird. Wo also newName-% dir% angezeigt wird (wo dir die Variable ist), schlägt dies auch bei newName - %% a fehl ...
Entschuldigung, ich glaube nicht, dass es möglich ist.
Trotzdem sieht es so aus, als ob es möglich wäre: Windows-Batch-Datei-zu-kopieren-und-behalten-Duplikate
Das ist ähnlich wie Antwort von aflat :
quelle
Dies sollte es tun:
Was es macht:
for
) formatiert als Name? Pfadfor
) und für jede Zeile (Datei)So wie es jetzt ist, wird der Kopierbefehl nur wiederholt, anstatt ausgeführt zu werden, sodass Sie ihn sicher ausführen und seine Ausgabe überprüfen können. Wenn Sie fertig sind, entfernen Sie einfach
echo
vonecho copy "%~2" "%targetPath%\%~n1%sufix%%~x1%"
quelle
Eine einfache PowerShell-Funktion kann dies auch tun:
Natürlich könnte man die "Write-Host" -Befehle entfernen - sie geben einfach ein paar visuelle Rückmeldungen. Es wäre auch möglich, zuerst die Dateinamen zu sammeln und später alle Dateien in einer separaten Schleife zu kopieren, was möglicherweise die Dinge beschleunigt.
$ready_for_copying
eine Anordnung,+=
) das$inter
-Werte dazu,if
-Bedingungen (z.$inter -in $ready_for_copying
),copy-item
-Befehl an einen neuenfor
-Block (z.for($i = 0; $i -lt $ready_for_copying.Length; $i++)
quelle