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
Batch file 如何通过在每个文件名的开头插入字符串来重命名目录中的所有文件?_Batch File_Batch Rename - Fatal编程技术网

Batch file 如何通过在每个文件名的开头插入字符串来重命名目录中的所有文件?

Batch file 如何通过在每个文件名的开头插入字符串来重命名目录中的所有文件?,batch-file,batch-rename,Batch File,Batch Rename,我想创建一个批处理脚本a.txt或.exe-我没有PowerShell来重命名一组文件。文件名的当前格式是file_name_51.zip,我想将此文件重命名为moredeail_Detail_file_name_51.zip 我曾尝试使用简单的重命名项脚本或CMD,但我的计算机无法识别该代码。我从dbenham看到了一个很好的代码示例: @echo off setlocal disableDelayedExpansion pushd . subst #: . #: for /f "eol=:

我想创建一个批处理脚本a.txt或.exe-我没有PowerShell来重命名一组文件。文件名的当前格式是file_name_51.zip,我想将此文件重命名为moredeail_Detail_file_name_51.zip

我曾尝试使用简单的重命名项脚本或CMD,但我的计算机无法识别该代码。我从dbenham看到了一个很好的代码示例:

@echo off
setlocal disableDelayedExpansion
pushd .
subst #: .
#:
for /f "eol=: delims=" %%F in ('dir /b /a-d *.txt^|findstr /er "_[0-9]*.txt"') do (
  set "name=%%~nF"
  setlocal enableDelayedExpansion
  for /f "eol=: delims=" %%A in ("!name:_=\x!") do (
    endlocal
    set "file=%%F"
    set "name=%%~pA"
    set "num=%%~nA"
    setlocal enableDelayedExpansion
    set "num=0000!num:~1!"
    set "name=!name:~1,-1!"
    ren "!file!" "!name:\x=_!!num:~-5!.txt"
    endlocal
  )
)
popd
subst /d #:
但我是一个新手,我不知道如何操纵它来做我需要的事情。你能帮忙吗

谢谢

这里有一种方法:

@echo off
for /f "delims=" %%a in ('dir /b a-d ') do if /i not "%%~nxa"=="%~nx0" ren "%%a" "MoreDetail_Detail_%%~nxa"
pause

谢谢你的回答!我试图从中创建一个.bat,但得到了一个“未找到文件”错误。有办法解决吗?批处理文件希望您的文件位于批处理文件所在的同一目录中。批处理文件也会被重命名,所以我编辑了上面的代码。