Wie kann ich Dateien anhand ihres Namens in einen Ordner verschieben?

Wie kann ich Dateien anhand ihres Namens in einen Ordner verschieben?

Ich habe mehrere .pdf- und .tex-Dateien in einem bestimmten Ordner „ABC“.

Sie sind alle nach dem Schema benannt

C01S02_Word.pdf
C03S02SS01_Description_random_words.pdf
C04S01SS02_More_words.pdf
and so forth

Csteht in diesem Schema für Kapitel,Sfür Abschnitt undSSfür Unterabschnitte. Im Ordner ABC habe ich also auch den Ordner für jedes Kapitel, einfach benanntC01,CO2und so weiter. In jedem Kapitelordner habe ich einen Ordner namensBilder.

Könnte jemand bitte ein Batch-Skript schreiben, damit ich alle .tex- und .pdf-Dateien in die entsprechendenBilder-Ordner, würde hin und her usw. C04S01SS02_More_words.pdfverschoben werden ?C04/PicturesC01S02_Word.pdfC01/Pictures

Notiz:natürlich habe ich das schon gegoogeltaber bisher konnte ich die vielen Bits nicht in ein funktionierendes Skript umwandeln. Ich möchte keine T&E-Läufe mehr machen. :/

Antwort1

Erstellen Sie diese Batchdatei:

@echo off
for %%F in (*.pdf *.tex) do call :subr "%%F"
exit /b

:subr
set filename=%1
move %1 %filename:~1,3%\Pictures
exit /b

Anmerkungen:

  • for %%F in (*.pdf *.tex) do …führt die folgende Anweisung einmal für jeden Dateinamen aus, der mit *.pdfoder übereinstimmt *.tex, wobei %%Fauf den Dateinamen gesetzt ist.
  • call :subr "%%F"ruft die unteren drei Zeilen des Skripts auf, wobei das erste Argument ( %1) auf "%%F"(den Dateinamen in Anführungszeichen) gesetzt ist.
  • exit /bbeendet das Skript, ohne das Eingabeaufforderungsfenster zu schließen.
  • set filename=%1kopiert das Dateinamenargument in die filenameVariable.
  • moveverschiebt eine Datei.
  • %variable:~start,len% nimmt die angegebene Teilzeichenfolge von (das erste Zeichen ist #0), ebenso die ersten drei Zeichen von . (Die Zählung beginnt bei 0; ich verwende 1, um das zu überspringen .)%variable%%filename:~1,3%%filename%"
  • exit /bkehrt aus der Subroutine zurück.

verwandte Informationen