For loop 对于批处理文件中的循环,将一个文件重命名两次
我编写此批处理文件是为了将一些文本附加到一组jpeg文件的文件名中,并提供在当前文件名之前或之后附加这些文本的选项 但是由于一些奇怪的原因,当在文件名之前追加时,一个文件被处理两次,得到的结果是new_new_filename.jpg,而所有其他文件只得到new_filename.jpg 有趣的是,这个问题并不总是发生,当在文件名后追加时,它总是工作正常 下面是整个代码,前后之间没有视觉上的差异,但结果仍然不同。有人能检查一下这个文件并解释一下我哪里错了吗 谢谢你的帮助For loop 对于批处理文件中的循环,将一个文件重命名两次,for-loop,batch-file,cmd,file-rename,batch-rename,For Loop,Batch File,Cmd,File Rename,Batch Rename,我编写此批处理文件是为了将一些文本附加到一组jpeg文件的文件名中,并提供在当前文件名之前或之后附加这些文本的选项 但是由于一些奇怪的原因,当在文件名之前追加时,一个文件被处理两次,得到的结果是new_new_filename.jpg,而所有其他文件只得到new_filename.jpg 有趣的是,这个问题并不总是发生,当在文件名后追加时,它总是工作正常 下面是整个代码,前后之间没有视觉上的差异,但结果仍然不同。有人能检查一下这个文件并解释一下我哪里错了吗 谢谢你的帮助 @ECHO off ti
@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
对于重命名,简单的for循环不起作用:
FOR %%a in (*.jpg) DO (
由于某些原因,旧的CP/M日需要使用afor/f
循环:
for /f "delims=" %%a in ('dir /a-d /b *.jpg') do (
对于重命名,简单的for循环不起作用:
FOR %%a in (*.jpg) DO (
由于某些原因,旧的CP/M日需要使用afor/f
循环:
for /f "delims=" %%a in ('dir /a-d /b *.jpg') do (
它在重命名后和重命名前都可以正常工作,只是不总是这样。请详细说明“/f”delims=“”为我的代码添加了哪些功能?以及您在示例中使用的目录字符是指什么?谢谢。我在前面的评论中的第一行提到了我的代码。只是尝试了你的解决方案,效果很好,只是想知道它到底在说什么,以及我如何给他指出一个不同的文件夹。谢谢你的帮助。它在重命名后和重命名前都能正常工作,只是不总是这样。请详细说明“/f”delims=“”为我的代码添加了哪些功能?以及您在示例中使用的目录字符是指什么?谢谢。我在前面的评论中的第一行提到了我的代码。只是尝试了你的解决方案,效果很好,只是想知道它到底在说什么,以及我如何给他指出一个不同的文件夹。谢谢你的帮助。