У меня есть несколько файлов .pdf и .tex в определенной папке «ABC».
Все они названы по схеме
C01S02_Word.pdf
C03S02SS01_Description_random_words.pdf
C04S01SS02_More_words.pdf
and so forth
Св этой схеме обозначает главу,Сдля раздела иSSдля подраздела. Так что в папке ABC у меня также есть папка для каждой главы, просто названнаяС01,С02и т. д. В каждой папке главы у меня есть одна папка с именемКартинки.
Может ли кто-нибудь написать пакетный скрипт, чтобы я мог переместить все файлы .tex и .pdf в соответствующие папки?Картинки-папка, C04S01SS02_More_words.pdf
будет перемещена в C04/Pictures
и C01S02_Word.pdf
в C01/Pictures
и так далее?
Примечание:конечно, я уже это гуглилно пока мне не удалось преобразовать все эти многочисленные биты в рабочий скрипт. Я больше не хочу делать прогоны T&E. :/
решение1
Создайте этот пакетный файл:
@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
Примечания:
for %%F in (*.pdf *.tex) do …
выполняет следующую инструкцию один раз для каждого имени файла, которое соответствует*.pdf
или*.tex
, при этом%%F
установлено значение имени файла.call :subr "%%F"
вызывает три нижние строки скрипта, при этом первый аргумент (%1
) устанавливается равным"%%F"
(имя файла, заключенное в кавычки).exit /b
завершает работу скрипта, не закрывая окно командной строки.set filename=%1
копирует аргумент имени файла вfilename
переменную.move
перемещает файл.%variable:~start,len%
берет указанную подстроку (первый символ — #0), то есть первые три символа . (Отсчет начинается с 0; я использую 1, чтобы пропустить .)%variable%
%filename:~1,3%
%filename%
"
exit /b
возвращается из подпрограммы.