Batch file 需要脚本中的重命名功能才能使用脚本所在目录以外的特定目录

Batch file 需要脚本中的重命名功能才能使用脚本所在目录以外的特定目录,batch-file,set,rename,Batch File,Set,Rename,我有我认为应该是一个简单的问题来解决,但不知道如何实现它,因为有人已经帮助我与下面的代码 我正在运行下面的代码来重命名我的文件 setlocal enabledelayedexpansion for /f %%a in ('dir *RETOUCH* /b') do ( set "name=%%a"&set "name=!name:.RETOUCH=!" ren "%%a" "!name!" ) 我需要它来处理这个目录 "C:\Users\Public\Desktop\

我有我认为应该是一个简单的问题来解决,但不知道如何实现它,因为有人已经帮助我与下面的代码

我正在运行下面的代码来重命名我的文件

setlocal enabledelayedexpansion
for /f %%a in ('dir *RETOUCH* /b') do (
    set "name=%%a"&set "name=!name:.RETOUCH=!"
    ren "%%a" "!name!"
)
我需要它来处理这个目录

"C:\Users\Public\Desktop\Uploads\%studiosetnumber%\%ymd%\"

目前,它只能在与文件相同的位置工作

以下是任务的批处理代码,并进行了一些简化:

@echo off
setlocal EnableDelayedExpansion
for %%a in ("C:\Users\Public\Desktop\Uploads\%studiosetnumber%\%ymd%\*RETOUCH*") do (
    set "name=%%~nxa"
    set "name=!name:.RETOUCH=!"
    ren "%%~a" "!name!"
)
endlocal
要了解其工作原理,请打开命令提示符窗口,执行以下命令并读取每个命令的帮助输出:

  • 获取/?
  • 设置/?
  • ren/?

您可以通过多种方式实现:

setlocal enabledelayedexpansion
Pushd "C:\Users\Public\Desktop\Uploads\%studiosetnumber%\%ymd%\"
  for /f %%a in ('dir *RETOUCH* /b') do (
    set "name=%%a"&set "name=!name:.RETOUCH=!"
    ren "%%a" "!name!"
  )
 popd

setlocal enabledelayedexpansion
cd /d "C:\Users\Public\Desktop\Uploads\%studiosetnumber%\%ymd%\"
  for /f %%a in ('dir *RETOUCH* /b') do (
    set "name=%%a"&set "name=!name:.RETOUCH=!"
    ren "%%a" "!name!"
  )

  setlocal enabledelayedexpansion
  set "myDir=C:\Users\Public\Desktop\Uploads\%studiosetnumber%\%ymd%\"
  for /f %%a in ('dir "%myDir%" *RETOUCH* /b') do (
    set "name=%%a"&set "name=!name:.RETOUCH=!"
    ren "%%a" "!name!"
  )

最后一个不起作用,因为
dir
只返回没有路径的文件名,因此
ren
失败。在我的答案中看到了非常简单的解决方案。非常好用,非常感谢。另外,我尝试用空格和格式把问题打得干净利落,但我想我不知道如何在这里正确地做,因为它总是把所有的东西都集中在一起。