在UNC路径下删除文件的命令

6

你好,我尝试使用以下命令删除UNC路径中的文件

set folder="\\SERVERNAME\Publish" 
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

但我收到了错误提示:
UNC paths are not supported. Defaulting to Windows Directory

一些文件需要使用批处理命令删除,这些文件存储在服务器的共享路径中。欢迎提供任何帮助。
2个回答

9

编辑 2015-09-16 - 原始答案保留在底部

代码重新格式化以避免在映射失败时删除非所需文件夹。只有在pushd成功的情况下,才会执行删除操作。

set "folder=\\SERVERNAME\Publish" 
pushd "%folder%" && (
    for /d %%i in (*) do rmdir "%%i" /s /q 
    popd
)

original answer:

set "folder=\\SERVERNAME\Publish" 
pushd "%folder%"
for /d %%i in (*) do rmdir "%%i" /s /q 
popd

pushd会在UNC路径上创建一个驱动器映射,然后切换到该映射。接下来,所有操作都在drive:\folders上进行。最后popd将删除驱动器分配。


我必须将单引号替换为双引号。 - aggaton
@aggaton,我不知道为什么我没有删除引号(我想这是从原始代码中复制/粘贴的)。谢谢。无论如何,这些引号甚至都不需要。 - MC ND

1

这将删除所有文件名类似于“ms”并且超过一年的文件。

@echo off
set "year=-365"
PushD "\\SERVERNAME\FolderName" && (
  "forfiles.exe" /s /m "*_ms_*" /d %year% /c "cmd /c del @file"
) & PopD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接