Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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
Windows 批处理文件重命名多个文件仅回显结果_Windows_Batch File - Fatal编程技术网

Windows 批处理文件重命名多个文件仅回显结果

Windows 批处理文件重命名多个文件仅回显结果,windows,batch-file,Windows,Batch File,我在创建批处理文件(.bat)以根据特定参数重命名同一目录中的多个文件时遇到问题。为了使它适用于多个文件,我必须为它添加一个增量值 通过研究(大部分在这里),我拼凑了下面的命令,但无论我做什么,我都无法真正做到。它只是回显应该做的事情,当我从“ren”之前删除回显时,它会显示错误的语法 @echo off CD C:\FolderPath\ setlocal enabledelayedexpansion set /a count=0 for /f "tokens=*" %%a in ('dir

我在创建批处理文件(.bat)以根据特定参数重命名同一目录中的多个文件时遇到问题。为了使它适用于多个文件,我必须为它添加一个增量值

通过研究(大部分在这里),我拼凑了下面的命令,但无论我做什么,我都无法真正做到。它只是回显应该做的事情,当我从“ren”之前删除回显时,它会显示错误的语法

@echo off
CD C:\FolderPath\
setlocal enabledelayedexpansion
set /a count=0
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
echo ren CDFF_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%_!count!.txt
set /a count+=1
)

将第一个参数添加到ren命令(要重命名的文件):

因此,整个代码是:

@echo off   
setlocal enabledelayedexpansion

CD C:\FolderPath\
set /a count=0

for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
   echo ren "%%a" "CDFF_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%_!count!.txt"
   set /a count+=1
)

请注意,它不适用于具有奇怪名称的文件。例如,“File(name.txt”

ren
要求输入filname作为其第一个参数。因此您的语法错误

下面是一个替代实现:

@echo off
setlocal enabledelayedexpansion

set FOLDER=%1
set DATE=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%hr%%time:~3,2%%time:~6,2%%time:~9,2%
set /a count=0

for /r %FOLDER% %%a in (*.txt) do (
    ren "%%a" CDFF_%DATE%_!count!.txt
    set /a count += 1
)
称为

rename.bat C:\FolderPath

@Tomalak-请仔细阅读问题。OP表示,如果删除ECHO,将导致语法错误。@dbenham哦,你是对的。删除注释+1,但为什么它不适用于有毒字符?引号应防止有毒字符。我尝试了此操作,得到了一个“系统找不到指定的路径”因此,我删除了“CD”命令,只是为了用*.bat文件所在文件夹中的文件对其进行测试,我仍然只让它回显它应该做的事情。好的。擦掉它。它可以工作。为了方便起见,我只是复制了代码,但我没有意识到,即使我在“ren”之后添加了参数,我也没有在它之前删除回显。谢谢nks.I可能弄错了,但我读这篇文章的方式是,需要使用目标路径调用.bat文件。在我的情况下,目标路径永远不会更改,.bat文件不能位于目标路径中,因此我尝试编写它(可能应该在最初的描述中添加这一点)这是一个特殊情况,
for/r
循环已经处理过。如果省略参数,
%1
将为空,这意味着
文件夹
将为空,此时,
for/r
将采用当前目录。
rename.bat C:\FolderPath