批处理/CMD 错误“系统找不到指定的文件”

问题描述

我正在尝试编写一个批处理/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 (将#修改为@)