问题描述
我正在尝试编写一个批处理/cmd 文件,当它找到“-”即 SpaceDashSpace 时,它将重命名目录。我以为通过 Echo 输出内容而不是真正重命名它们,我就拥有了我需要的一切。接下来,我在几个目录上对其进行了测试,效果很好。
当我尝试将其移动到联网文件夹/子文件夹时,我发现我需要 PushD 命令。如果我在特定目录中运行它,一切都很好。
路径信息类似于:
\\MyNetworkStorage\TopLevelFolder\Music
关注:
Artist1
Artist1 - Album1
Artist1 - Album2
Artist1 - Album3
Artist2
Artist2 - Album1
Artist2 - Album2
你懂的。
如果我在任一中启动批处理文件:
- \MyNetworkStorate\TopLevelFolder\Music\Artist1 或
- \MyNetworkStorate\TopLevelFolder\MusicArtist2
一切都很好。如果我尝试从一个级别开始,那就是:
- \MyNetworkStorate\TopLevelFolder\Music
对于每个目录,我都会收到以下错误。:
“系统找不到指定的文件”
谷歌搜索告诉我路径可能很长,我已经按照说明
- 本地计算机策略 > 计算机配置 > 管理 模板 > 系统 > 文件系统
- 双击启用 Win32 Long 路径选项并启用它
另一个建议是在本地机器上运行我的 .cmd 文件时,它的开头是: cmd.exe /c MyCmdFile.cmd
我搜索的任何内容都无法解决我的问题。
我是批处理文件的新手,所以也许问题实际上出在我过去 1.5 天拼凑的内容上。在这一点上,我希望我为它编写了一个 C# 程序。我以为这很简单。有什么建议吗?
同样,如果我在任何特定艺术家的目录中启动它,它将重命名所有子目录,删除“艺术家名称 - ”部分,只保留我想要的专辑名称。当我移动到包含所有艺术家的目录时,它失败了。我正在在线更改以命令文件的“PUSHD”开头。
@Echo Off
setlocal EnableDelayedExpansion
PUSHD \\MyNetwork\Music\HighRez <<<---This fails
PUSHD \\MyNetwork\Music\HighRez\Any Artist I pick <<<---This works for all sub directories
:: If this fails then exit
If %errorlevel% NEQ 0 goto:eof
:: other commands...
FOR /D /r %%G in ("* - *") DO (
SET DirName=%%~nxG
set "NewName=!DirName:* - =!"
Echo Renaming from "!DirName!" To "!NewName!"
REM ***Remove REM from line below to actually rename once you are happy with results
ren "!DirName!" "!NewName!"
)
popd
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)