Tengo varios archivos .pdf y .tex en una determinada carpeta "ABC".
Todos ellos están nombrados por el esquema.
C01S02_Word.pdf
C03S02SS01_Description_random_words.pdf
C04S01SS02_More_words.pdf
and so forth
Cen este esquema significa capítulo,Spara la sección ySSpara la subsección. Entonces en la carpeta ABC también tengo la carpeta para cada capítulo, simplemente llamadaC01,C02Etcétera. En cada carpeta de capítulo tengo una carpeta llamadaFotos.
¿Podría alguien escribir un script por lotes para poder mover todos los archivos .tex y .pdf en sus respectivosFotos-carpeta, C04S01SS02_More_words.pdf
¿se movería hacia C04/Pictures
y C01S02_Word.pdf
hacia C01/Pictures
y así sucesivamente?
Nota:Por supuesto que ya busqué esto en Google.pero hasta ahora no pude convertir todos los bits en un script que funcione. Ya no quiero realizar viajes de T&E. :/
Respuesta1
Cree este archivo por lotes:
@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
Notas:
for %%F in (*.pdf *.tex) do …
realiza la siguiente declaración una vez para cada nombre de archivo que coincida con*.pdf
o*.tex
,%%F
establecido en el nombre de archivo.call :subr "%%F"
invoca las tres líneas inferiores del script, con el primer argumento (%1
) establecido en"%%F"
(el nombre del archivo, entre comillas).exit /b
sale del script sin borrar la ventana del símbolo del sistema.set filename=%1
copia el argumento del nombre del archivo en lafilename
variable.move
mueve un archivo.%variable:~start,len%
toma la subcadena indicada de (el primer carácter es #0), al igual que los primeros tres caracteres de . (El conteo comienza en 0; estoy usando 1 para omitir el archivo ).%variable%
%filename:~1,3%
%filename%
"
exit /b
regresa de la subrutina.