Batch/CMD 错误 "The system cannot find the file specified"

Batch/CMD Error "The system cannot find the file specified"

我正在尝试编写一个 batch/cmd 文件,它会在找到“-”即 SpaceDashSpace 时重命名目录。我以为我通过 Echo 输出东西而不是实际重命名它们就拥有了我需要的一切。接下来我在几个目录上对其进行了测试,它运行良好。

当我试图将它移动到网络 folder/sub 文件夹时,我发现我需要 PushD 命令。同样,如果我 运行 它在特定目录中,一切都很好。

路径信息类似于:

\MyNetworkStorage\TopLevelFolder\Music

其次是:

Artist1
    Artist1 - Album1
    Artist1 - Album2
    Artist1 - Album3
Artist2
    Artist2 - Album1
    Artist2 - Album2

你懂的。

如果我在以下任一方式中启动批处理文件:

一切都很好。如果我尝试从上一层开始,那就是:

每个目录都出现以下错误。:

“系统找不到指定的文件”

谷歌搜索告诉我路径可能太长,我已按照说明到达

另一个建议是当运行在本地机器上安装我的 .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

这就是最终为可能需要类似东西的任何人工作的东西。它是使用 %%G 及其周围引号的组合,如:

ren "%%G" "!NewName!"

代替原来的变量“!DirName!”

工作示例,终于 ;-)

@Echo Off
setlocal EnableDelayedExpansion 

PUSHD \NASBoxOnNetwork\Music\HighRez
:: 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 "%%G" To !NewName!

REM ***Remove REM from line below to actually rename once you are happy with results
ren "%%G" "!NewName!"
)
popd