【发布时间】:2014-04-30 17:01:40
【问题描述】:
大家早上好。我有一个批处理文件,它在网络 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 exists 语句在该 for 语句中工作。 此外,这会创建一个目录结构,如 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 文件,然后复制剩余的文件,然后从服务器上删除两个月或更早的文件。该行仅在末尾,但每台计算机都会重复其他行。
也许有更好的方法来解决它?当我以这种方式运行它时,似乎我没有为所有符合条件的用户获得一个文件夹。
再次感谢!
【问题讨论】:
标签: batch-file if-statement for-loop xcopy