需要帮助从 Windows 10 .BAT文件运行嵌套程序调用而不会出错"UNC paths are not supported"



这是我的情况。我目前在两者上都有以下目录结构:本地硬盘驱动器D:和映射网络驱动器Z:

D:Audiomp3
Artist 1 - Album 1
Artist 1 - Album 2
Artist 1 - Album 3
Artist 2 - Album 1
etc.

同样,我的网络共享\Diskstationmusic映射到Z:,因此:

Z:mp3
Artist 1 - Album 1
Artist 1 - Album 2
Artist 1 - Album 3
Artist 2 - Album 1
etc.

我目前使用的是两个命令行应用程序。BAT文件对这些文件夹和子文件夹中的所有mp3文件执行音频增益更改。

我使用的第一个程序叫做sweep.exe。它基本上允许我";"扫";所有符合我的文件搜索类型*.mp3的文件都放入另一个程序中,并递归地遍历每个文件夹。

被调用来实际进行增益改变的程序是mp3gain。我的在本地D:驱动器上运行的BAT文件如下所示:

d:
del gainadjust_output.txt
cd Audio
cd mp3
sweep mp3gain /a /c /d 7 /q /f *.mp3 > d:gainadjust_output.txt

双击时。从驱动器D:本地运行的BAT文件,我得到如下输出:

Entering directory: '220 Volt - (2014) Walking In Starlight'
220 Volt - (2014) Walking In Starlight - 01 - Walking In Starlight.mp3
220 Volt - (2014) Walking In Starlight - 02 - System Overload.mp3
220 Volt - (2014) Walking In Starlight - 03 - Broken Promises.mp3
220 Volt - (2014) Walking In Starlight - 04 - Alive.mp3
220 Volt - (2014) Walking In Starlight - 05 - Blind.mp3
220 Volt - (2014) Walking In Starlight - 06 - Stranded.mp3
220 Volt - (2014) Walking In Starlight - 07 - Get Me Out.mp3
220 Volt - (2014) Walking In Starlight - 08 - The Waiting.mp3
220 Volt - (2014) Walking In Starlight - 09 - Through The Wastelands.mp3
220 Volt - (2014) Walking In Starlight - 10 - Burning Heart.mp3
220 Volt - (2014) Walking In Starlight - 11 - Take A Good Look.mp3
220 Volt - (2014) Walking In Starlight - 12 - One Good Reason.mp3
220 Volt - (2014) Walking In Starlight - 13 - Guiding Light.mp3
No changes to 220 Volt - (2014) Walking In Starlight - 01 - Walking In Starlight.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 02 - System Overload.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 03 - Broken Promises.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 04 - Alive.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 05 - Blind.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 06 - Stranded.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 07 - Get Me Out.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 08 - The Waiting.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 09 - Through The Wastelands.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 10 - Burning Heart.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 11 - Take A Good Look.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 12 - One Good Reason.mp3 are necessary
No changes to 220 Volt - (2014) Walking In Starlight - 13 - Guiding Light.mp3 are necessary
Entering directory: '24 - 7 Spyz - (1991) This Is 24 - 7 Spyz'
24 - 7 Spyz - (1991) This Is 24 - 7 Spyz - 01 - Tick, Tick ,tick.mp3
24 - 7 Spyz - (1991) This Is 24 - 7 Spyz - 02 - Stuntman.mp3
24 - 7 Spyz - (1991) This Is 24 - 7 Spyz - 03 - My Desire.mp3
24 - 7 Spyz - (1991) This Is 24 - 7 Spyz - 04 - Peace & Love.mp3
24 - 7 Spyz - (1991) This Is 24 - 7 Spyz - 05 - Earthquake.mp3

所以一切都像冠军一样奔跑。

然而,当我从映射的驱动器Z:运行几乎相同的BAT文件时,它看起来像这样:

z:
del gainadjust_output.txt
cd mp3
sweep mp3gain /a /c /d 7 /q /f *.mp3 > z:gainadjust_output.txt

操作失败的原因似乎是我在主题中提到的UNC问题:

'\Diskstationmusicmp3'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.
*.mp3
Can't open *.mp3 for reading
Entering directory: 'Constantine - (2013) Resign Due'
'\Diskstationmusicmp3Constantine - (2013) Resign Due'
CMD.EXE was started with the above path as the current directory.
UNC paths are not supported.  Defaulting to Windows directory.
*.mp3
Can't open *.mp3 for reading

我曾尝试使用pushd ~dp0popd将当前驱动器号粘贴在堆栈上,并将其用作BAT文件中的别名,但这似乎仍然只是使用了导致UNC错误的UNC路径\Diskstationmusic

我不确定这个问题是因为sweep.exe程序的使用导致Z:无法使用,还是因为在网络驱动器上运行BAT文件而导致的。

如果你觉得有一种方法可以做sweep.exemp3gain.exe传递文件的事情,这也解决了UNC问题,我很想听听。现在,我已经扯掉了很多头发,用BAT文件在谷歌上搜索UNC路径问题,变得斗鸡眼,所以任何帮助都将不胜感激!

作为参考,我想@Mofi觉得有必要删除这个解决方案,并给我一个否定的代表。

@echo off
setlocal EnableExtensions DisableDelayedExpansion
if "%~d0" == "\" (set "OutputFile=%~dp0gainadjust_output.txt") else set "OutputFile=%~d0gainadjust_output.txt"
(for /F "delims=" %%I in ('dir "%~dp0*.mp3" /A-D /B /S 2^>nul') do mp3gain.exe /a /c /d 7 /q /f "%%I")>"%OutputFile%"
endlocal 

再次感谢你的解决方案,@Mofi,即使你觉得有必要在事后修改它。

最新更新