J'ai un fichier tel que AAA_a001.jpg
, BBB_a002.jpg
, CCC_a003.jpg
sous Windows 7 Et j'essaie d'utiliser batch pour renommer ces fichiers en a001_AAA.jpg
, a002_BBB.jpg
, a003_CCC.jpg
.
Juste pour échanger le contenu entre _
.
Je cherche depuis un moment, mais je ne sais toujours pas comment faire cela… .. Quelqu'un peut-il m'aider? Merci.
@echo off
pushd "pathToYourFolder" || exit /b
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF"
)
popd
Remarque: le nom est divisé à la première occurrence de _
. Si un fichier s'appelle "part1_part2_part3.jpg", il sera renommé "part2_part3_part1.jpg".
Utiliser la commande REN
Ren
est pour rename
ren ( where the file is located ) ( the new name )
exemple
ren C:\Users\&username%\Desktop\aaa.txt bbb.txt
cela changera aaa.txt en bbb.txt
Votre code sera:
ren (file located)AAA_a001.jpg a001.AAA.jpg
ren (file located)BBB_a002.jpg a002.BBB.jpg
ren (file located)CCC_a003.jpg a003.CCC.jpg
etc
IT WILL NOT WORK IF THERE IS SPACES!
J'espère que ça aide: D
comme dit Itsproinc, la commande REN
fonctionne!
mais si votre chemin/nom de fichier contient des espaces, utilisez des guillemets ""
exemple:
ren C:\Users\&username%\Desktop\my file.txt not my file.txt
ajouter " "
ren "C:\Users\&username%\Desktop\my file.txt" "not my file.txt"
j'espère que ça aide
Je suppose que vous connaissez la longueur de la partie avant le _
et après le trait de soulignement, ainsi que l'extension. Si vous ne le faites pas, cela pourrait être plus complexe qu'une simple sous-chaîne.
cd C:\path\to\the\files
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3%
set q=%a:~4,4%
set b=%p_%q.jpg
ren %a %b
)
Je viens juste de trouver ce script et je ne l'ai pas testé. Consultez this et that pour plus d'informations.
SI vous voulez supposer que vous ne connaissez pas les positions du _
et les longueurs et l'extension, je pense que vous pourriez faire quelque chose avec les boucles for pour vérifier l'index du _
, puis le dernier index du .
, l'enrouler une chose goto
et le faire fonctionner. Si vous êtes prêt à traverser ce problème, je vous suggère d'utiliser WindowsPowerShell (ou Cygwin) au moins (pour votre propre bien) ou d'installer un langage de script plus avancé (pensez Python/Perl). façon.
Je renomme en code
echo off
setlocal EnableDelayedExpansion
for %%a in (*.txt) do (
REM echo %%a
set x=%%a
set mes=!x:~17,3!
if !mes!==JAN (
set mes=01
)
if !mes!==ENE (
set mes=01
)
if !mes!==FEB (
set mes=02
)
if !mes!==MAR (
set mes=03
)
if !mes!==APR (
set mes=04
)
if !mes!==MAY (
set mes=05
)
if !mes!==JUN (
set mes=06
)
if !mes!==JUL (
set mes=07
)
if !mes!==AUG (
set mes=08
)
if !mes!==SEP (
set mes=09
)
if !mes!==OCT (
set mes=10
)
if !mes!==NOV (
set mes=11
)
if !mes!==DEC (
set mes=12
)
ren %%a !x:~20,4!!mes!!x:~15,2!.txt
echo !x:~20,4!!mes!!x:~15,2!.txt
)