2016-11-14 5 views
0

Ich habe etwa 10 Batch-Dateien, die * TXT-Dateien aus Stammordner in ihre Unterordner kopieren. Der Code für das Kopieren folgt:Batch-Datei ersetzen Zeichenfolge im Dateinamen der kopierten Dateien

cscript ..\myScripts\CopyFiles.vbs "." "..\myScripts\Copy.cfg" "scripts_A" "((.+\.txt)|(.+\.ps1))" 

Jede einzelne Batch-Datei kopieren * .txt-Dateien in dem Ordner mit dem gleichen Namen (a.bat -> scripts_A, B.bat -> scripts_B). Ich brauche richtigen Dateinamen in jedem Unterordner (im Ordner scripts_A Dateien müssen operationAfirst.txt, operationAsecond.txt, in Ordner scripts_B Dateien operationBfirst.txt, operationBsecond.txt) sein. So sollte das Ergebnis folgende sein:

for folder scripts_A: 
operationAfirst.txt 
operationAsecond.txt 
for folder scripts_B: 
operationBfirst.txt 
operationBsecond.txt 

Alle * .txt-Dateien in Unterordner sind in der Regel Klone von * .txt-Dateien für Ordner scripts_A. Ich muss nur ihren Dateinamen aktualisieren. Gibt es eine Möglichkeit, Batch-Datei zu bearbeiten, die "A" Zeichenfolge in Dateiname für "B" in Batch für Ordner Scripts_B ersetzen kann?

+0

Mein Kopf wirbelt: Ich habe eine Charge ... Ich habe etwa 10 Batch-Dateien ... zeigt die Argumente eines VBScript. Sie machen nicht sehr klar, was Sie erreichen wollen. Umbenennen von Dateien in Ordnern, die zu abstrahieren sind, um irgendein Muster zu sehen, um zu wissen, wie es umbenannt werden soll. – LotPings

+0

ok, ich werde versuchen, es besser zu erklären. Ich habe 10 Batch-Dateien (A.bat, B.bat, C.bat ....., J.bat). Jede einzelne Batch-Datei kopiert * .txt-Dateien in einen Ordner mit demselben Namen (A.bat -> scripts_A, B.bat -> scripts_B). Wie Sie anhand des Skripts sehen können, kopiere ich alle * .txt-Dateien in Unterordner. Aber ich muss richtigen Dateinamen in jedem Unterordner haben (im Ordner scripts_A Dateien müssen operationAfirst.txt, operationBsecond.txt, im Ordner scripts_B Dateien operationBfirst.txt, operationBsecond.txt) sein. Ich weiß, es ist ein bisschen verwirrend. – 3georgo3

+0

Bitte geben Sie keine wesentlichen Informationen in Kommentare, sondern bearbeiten Sie Ihre Frage. Warum haben Sie nicht einen Batch mit cmdline arg, der angibt, welcher Ordner verwendet werden soll? Ist der Dateiname operationAfirst.txt wörtlich oder nur ein Auszug? – LotPings

Antwort

0

Anstatt das Ergebnis eines schlecht entworfenen Setups zu reparieren, würde ich lieber Hinweise geben, wie ich diese Situation ändern kann. Also gegen den besten Wissen dieser Stapel wird das Umbenennen tun:

@Echo off 
Setlocal 
CD /D X:\where\ever\you\start 
For %%A in (A B C D E F G H I J) Do For /F "delims=" %%B in (
    'Dir /B %CD%\Script_%%A\operation*.txt |Findstr /V "operation%%A"' 
) Do Call :RenFiles %%A "%%~fB" 
Goto :Eof 

:RenFiles 
Set OldName=%~nx2 
Set NewName=operation%1%OldName:~10% 
Echo Ren %2 %NewName% 

Ändern Sie den Pfad in der CD-Anweisung. Der erste der gestapelten for-Schleifen iteriert die Buchstaben A bis J. Der zweite Befehl führt dir im Ordner script_ (Buchstabe) aus, der alle Dateien beginnend mit dem Vorgang und der Erweiterung .txt enthält. Der findstr entfernt dann alle korrekten Namen für diesen Ordner. Die restlichen Argumente werden dann an das aufgerufene Unterprogramm

Das Unterprogramm die neuen Namen aus dem Präfix Betrieb baut durch die Ordner nachgestellten Buchstaben und der ursprünglichen Namen aus dem 11. Platz (Offset 10).

Solange das Echo vor dem Ren bleibt, zeigt es nur, was es tun würde.

Verwandte Themen