Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 对于批处理文件中的循环,将一个文件重命名两次_For Loop_Batch File_Cmd_File Rename_Batch Rename - Fatal编程技术网

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

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

我编写此批处理文件是为了将一些文本附加到一组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

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

FOR %%a in (*.jpg) DO (
由于某些原因,旧的CP/M日需要使用a
for/f
循环:

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

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

FOR %%a in (*.jpg) DO (
由于某些原因,旧的CP/M日需要使用a
for/f
循环:

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

它在重命名后和重命名前都可以正常工作,只是不总是这样。请详细说明“/f”delims=“”为我的代码添加了哪些功能?以及您在示例中使用的目录字符是指什么?谢谢。我在前面的评论中的第一行提到了我的代码。只是尝试了你的解决方案,效果很好,只是想知道它到底在说什么,以及我如何给他指出一个不同的文件夹。谢谢你的帮助。它在重命名后和重命名前都能正常工作,只是不总是这样。请详细说明“/f”delims=“”为我的代码添加了哪些功能?以及您在示例中使用的目录字符是指什么?谢谢。我在前面的评论中的第一行提到了我的代码。只是尝试了你的解决方案,效果很好,只是想知道它到底在说什么,以及我如何给他指出一个不同的文件夹。谢谢你的帮助。