对于批处理文件中的循环重命名一个文件两次

时间:2013-08-29 19:26:26

标签: for-loop batch-file cmd file-rename batch-rename

我编写了这个批处理文件,将一些文本附加到一组jpeg文件的文件名中,提供了在当前文件名之前或之后附加它们的选项。

但是由于一些奇怪的原因,当在文件名前附加时,一个文件正在被处理两次,结果为new_new_FileName.jpg,而所有其他文件只是new_FileName.jpg。

有趣的是,这个问题并不总是发生,以及在文件名后追加它总是正常工作。

以下是整个代码,之前或之后没有视觉差异,但仍然产生不同的结果。任何人都可以检查这个文件并解释我在哪里错了吗?

非常感谢帮助。

@ECHO off
title Rename Script
set /A count=1
:Start
cls
set /p STR=choose a string to append:
cls
echo 1. Append before
echo 2. Append after
set /p choice=I choose (1,2):
if %choice%==1 goto renameb
if %choice%==2 goto renamea
:renameB
cls
echo Appending '%STR%' before current file name.
echo.
set /A count=0
FOR %%a in (*.jpg) DO (
    ren "%%~a" "%STR%%%~na%%~xa"
    echo Was: %%~a Became: %STR%%%~na%%~xa
    set /A count+=1
)
goto end
:renameA
cls
echo Appending '%STR%' after current file name.
echo.
set /A count=0
FOR %%a in (*.jpg) DO (
    ren "%%~a" "%%~na%STR%%%~xa"
    echo Was: %%~a Became: %%~na%STR%%%~xa
    set /A count+=1
)
goto end
:end
echo[
echo %count% files were renamed.
echo[
echo The process in now done.
pause

1 个答案:

答案 0 :(得分:5)

重命名,简单的for循环不起作用:

FOR %%a in (*.jpg) DO (

出于某些原因,需要使用FCB's for /f循环的旧CP / M天:

for /f "delims=" %%a in ('dir /a-d /b *.jpg') do (