2016-10-04 8 views
0

mit Batch-Datei zu kopieren, ich habe zwei Ordner CopyFrom und CopyTo wo CopyFrom 100 Textdateien als 1.txt ... 100.txt genannt hat und in CopyTo Ordnern Ich habe 100 Ordner wie F1 ... F100. Nun mag ich eine Datei aus CopyFrom Ordnern in einen Ordner in CopyTo kopieren, so dass F11.txt enthalten, F2 enthalten 2.txt, ..., wird F100100.txt Datei enthalten.Kopieren einer Datei in einen Ordner zu einem Zeitpunkt, wo es 100 Dateien und 100 Ordner

Ich weiß, alle Ordner zu kopieren Ich kann etwas wie For /d %%a in (C:\Users\me\Desktop\ShortCuts\*) do xcopy "C:\Users\me\Desktop\Time.xls" "%%a" verwenden, aber ich konnte keine Möglichkeit finden, verschiedene Dateien in andere Ordner zu kopieren.

kann ich alle Dateien (For %%a in (C:\Users\me\Desktop\ShortCuts\*) Echo "%%a") im CopyFrom Ordner Echo und auch alle Ordner in CopyTo Ordner Echo kann aber konnte nicht herausfinden, mit beiden zu arbeiten zu bekommen, was ich suche.

+0

Sie haben nicht klargestellt, ob die Zielordner die gleichen Namen haben wie die Quelldateien oder wenn Sie nur jede einzelne Quelldatei in einem anderen unbekannten Zielordner ablegen möchten. – Compo

+0

Sind alle Ordner 'F1',' F2' usw. in der Position 'CopyTo' bereits vorhanden? wenn nicht, müssen sie erstellt werden? – aschipfl

+0

@Compo, tut mir leid, 'CopyTo'-Ordner hat 100 Ordner (z. B. F1, F2, ... F100) und diese Ordner-Name ist nicht das gleiche wie die Quelldatei kopiert wird. Wenn ich sagte, ** kann anders sein **, meinte ich, der Name des Zielordners oder der Name der Quelldatei kann unterschiedlich sein, wie ich im Beispiel erwähnt habe. – Viki2016

Antwort

0

den Quellort Gesetzt enthält die Dateien 1.txt-100.txt nur und das Zielverzeichnis enthält bereits alle F1-F100 Verzeichnisse, könnte der folgende Code-Schnipsel für Sie arbeiten:

@echo off 
setlocal EnableExtensions DisableDelayedExpansion 

rem // Define constants here: 
set "Pattern=*.txt" 
set "CopyFrom=." 
set "CopyTo=D:\Target" 

for %%F in ("%CopyFrom%\%Pattern%") do (
    ECHO copy "%%~F" "%CopyTo%\F%%~nF\" 
) 

endlocal 
exit /B 

Es Ist keine Aufzählung des Zielortes erfolgt, wird das Kopierziel einfach vom Quelldateinamen abgeleitet.

Nachdem Sie das Skript getestet haben, entfernen Sie den Großbuchstaben Befehl, um tatsächlich Dateien zu kopieren!

+0

wäre es toll, wenn Sie dies bitte erklären können, kopieren Sie %% ~ F ""% CopyTo% \ F %% ~ nF \ "' – Viki2016

+0

Dies kopiert jede Quelldatei ('%% ~ F') in den Ordner'% CopyTo% 'mit dem Namen' F', gefolgt vom Basisnamen der aktuellen Datei (wenn die Datei '27.txt' ist, '%% ~ nF' ist gleich' 27', tippe 'für /?'in ein Eingabeaufforderungsfenster und sehen Sie den unteren Rand des Hilfetextes); Der letzte Backslash stellt sicher, dass das Ziel ein Ordner ist, aber keine Datei ... – aschipfl

+0

danke für die ausführliche Erklärung .. – Viki2016

2
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    rem Configure paths 
    set "copyFrom=c:\somewhere" 
    set "copyTo=c:\anotherPlace" 

    rem Generate two lists, one with files and one with folders 
    dir /b /a-d "%copyFrom%\*" > "%temp%\copyFromFiles.txt" 
    dir /b /ad "%copyTo%\*" > "%temp%\copyToFolders.txt" 

    rem Assign each list as input to two streams and start processing  
    9< "%temp%\copyFromFiles.txt" 8< "%temp%\copyToFolders.txt" (
     call :matchFromWithTo 
    ) 

    rem Remove generated lists 
    del "%temp%\copyFromFiles.txt" 
    del "%temp%\copyToFolders.txt" 

    rem End 
    goto :eof 

:matchFromWithTo 
    rem Read file from stream 9 and leave if nothing read 
    <&9 set /p "file=" || goto :eof 
    rem Read folder from stream 8 and leave if nothing read 
    <&8 set /p "folder=" || goto :eof 

    rem Do the copy (debug: we will only echo the command) 
    echo copy "%copyFrom%\%file%" "%copyTo%\%folder%" 

    rem Keep reading until all files or folders are processed 
    goto :matchFromWithTo 
+0

Gute Idee mit Eingabeumleitung! Was ist mit dem Hinzufügen von '/ on' zu den' dir'-Befehlszeilen, um sortierte Ausgaben zu erhalten (auch auf Nicht-NTFS-Volumes)? – aschipfl

+0

@aschipfl, Danke. Das * "... kann anders sein ..." * ließ mich die Option verwerfen. Ohne eine klare Beziehung zwischen Dateien/Ordnernamen zu haben, entschied ich mich, einfach in der Standardreihenfolge des Dateisystems zu iterieren. –

+0

Vielen Dank für die Antwort und ich muss sagen, Ihr ist eine sehr detaillierte .. – Viki2016

Verwandte Themen