【问题标题】:UNC Paths Not Supported in called batch file调用的批处理文件中不支持 UNC 路径
【发布时间】:2016-07-30 11:25:18
【问题描述】:

批处理文件的目的是遍历一个目录,将所有修改日期在 x 和 y 之间的文件移动到一个临时目录(位于存档文件夹中),从临时目录创建一个 .zip,然后最后删除临时目录。

我正在从一批中调用一批。初始批次使用 pushd 检索网络路径,但是当调用下一个批次并使用 forfiles 将文件移动到存档中时,会引发 UNC 路径错误。 “错误:不支持 UNC 路径 (\machine\share)。”

这两个 .bat 文件在共享网络的同一目录中。

我已经阅读了这个类似问题的其他答案,但没有一个答案能解决我的问题。

第一个批处理文件:

@echo off
setlocal EnableExtensions
cls 
@pushd %~dp0

:firststep
........
code....
........
echo Calling...
CALL ArchiveTool.bat %MM% %yyyy% \\riskview\EBSArchive
echo Press any key to process next directory...
pause >nul

到这里一切正常。

失败的批次:

@echo off
setlocal EnableExtensions
.......
Code...
.......
md %3\Archive\%1-%2
forfiles /P %3 /D +%1/1/%2 /C "cmd /c if /I @FDATE LSS %mm%/1/%2 move @file                
%3\Archive\%1-%2 >NUL & echo|set /p=."

目录创建成功,但是forfiles失败。

【问题讨论】:

  • 1) 我强烈建议您使用 Powershell 脚本而不是 .bat 文件来解决任何复杂问题。 2) 如果您必须使用 .bat 文件 - 如果 UNC 名称不起作用......那么一个简单的解决方法可能是将共享映射到驱动器号。
  • 您可以为 .bat 设置完整的 UNC 路径,并在 call 后面加上引号。对于网络共享路径,应将 %~dp0 替换为 %~p0。 Pushd 也不能用于 UNC 路径。

标签: batch-file cmd archive unc pushd


【解决方案1】:

UNC 默认路径默认关闭,因为它们用于使旧程序崩溃。[10]

HKEY_CURRENT_USER\Software\Microsoft\Command Processor [10] 处的 Dword 注册表值 DisableUNCCheck 允许默认目录为 UNC。 CD 命令将拒绝更改,但将 UNC 路径放置在默认目录中的 Cmd 快捷方式中或使用 Start 命令。 start "" /d \127.0.0.1\C$ "cmd /k" (C$ 共享给管理员)。

来自我在https://en.wikipedia.org/wiki/Batch_file#Setting_a_UNC_working_directory_from_a_shortcut的条目

【讨论】:

    猜你喜欢
    • 2021-10-31
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多