【发布时间】:2021-04-14 01:08:00
【问题描述】:
我有一个充满子文件夹的文件夹,这些子文件夹的文件名偶尔会有破折号作为第六个字符。这些子文件夹将包含带有文件名的文件,这些文件也有破折号作为第六个字符。我需要删除子文件夹及其文件的文件名中的所有这些破折号。
出于我的目的,我已经研究并修改了一些代码,但脚本首先更改了子文件夹名称,这会破坏脚本,因为它试图更改现在重命名的子文件夹中的文件名。
有人可以指出解决方案的方向吗?
setlocal disableDelayedExpansion
for /f "delims=" %%F in ('dir /b /s ?????-*.*') do (
set "old=%%F"
set "new=%%~nF"
setlocal enableDelayedExpansion
ren "!old!" "!new:-=!"
endlocal
)
【问题讨论】:
-
尝试通过在
dir命令中添加/A:-D从dir的输出中排除子文件夹 -
你应该使用
/A:D作为目录,没有必要为%%F定义一个变量,因为你可以直接使用它,%%~nF应该是%%~nxF,因为目录可以包括.个字符。 -
@terror 但是如果从
dir命令中排除,OP 如何重命名目录?
标签: windows batch-file