早上好。我有一个批处理文件,用于在网络PC用户文件夹中搜索XML文件,然后将这些文件复制到网络位置。但是,它会为所有用户复制文件夹,无论他们是否有相关文件。我想要做的只是为该用户创建一个文件夹,如果包含这些文件的目录存在。
代码如下所示:
for /d %%g in ("\\computer.domain\c$\users\*") do (
xcopy /d /q /c /i /y "%%g\AppData\Roaming\Program\Folder\*.xml" "\\server.domain\shared_folder\%%g"
)
它可以很好地工作,但是为每个用户创建一个用户文件夹。我想要做的只是为用户创建一个文件夹,其中Appdata \ Roaming \ Program \ Folder首先包含XML文件。我无法弄清楚如何在if语句中使用if exists语句。 此外,这会创建一个类似computer.domain / c $ / users / user的目录结构。如果有办法剥离c $ / users(所以它是computer.domain / user / file.xml),那就更加惊人了。
提前致谢!!
(更新)以下是批处理使用的完整代码。它为每台计算机重复:
net use k: \\computer.domain\c$\users
for /d %%g in ("k:\*") do (
forfiles /P "%%g\AppData\Roaming\Program\Folder" /m *.xml /D -7 /C "cmd /C del @path"
)
net use k: /delete
for /d %%g in ("computer.domain\c$\users\*") do (if exist "%%g\Appdata\Roaming\Program\Folder\*.xml" (
xcopy /d /q /c /y "%%g\AppData\Roaming\Program\Folder\*.xml" "\\server.domain\shared_folder\%%~nxg\")
)
forfiles /P /S "M:\MAS500\endicia-postback-archive" /m *.xml /D -60 /C "cmd /C del @path"
整个功能是删除一周或更早的XML文件,然后复制剩余的文件,然后从服务器中删除两个月或更长时间的文件。该行仅在最后,但每台计算机重复其他行 或许还有更好的方法可以解决这个问题吗?当我以这种方式运行时,似乎我没有为符合条件的所有用户获取文件夹。 再次感谢!
答案 0 :(得分:0)
在改变路径后测试:
这里只是评论您使用/d
开关将限制正在复制的文件。
@echo off
for /d %%g in ("\\computer.domain\c$\users\*") do (
if exist "%%g\AppData\Roaming\Program\Folder\*.xml" (
xcopy /d /q /c /y "%%g\AppData\Roaming\Program\Folder\*.xml" "\\server.domain\shared_folder\computer.domain\%%~nxg\"
)
)