好的,所有这里都在stackoverflow
我经常访问这个网站,总能找到我想要的东西。不幸的是,我觉得我在这个问题上有点过头了。所以我做了一个帐户,希望你们要么告诉我这是可能的,怎么样,或者告诉我,我疯了,我会继续前进。 =]
所以这就是我想做的事情, 我有一台旧计算机,有几个用户登录到它。我现在有一台新计算机,我想将用户桌面项目和收藏项目复制到远程服务器,以便我可以在设置新计算机后将其复制回来。目前的系统是XP,新系统将是win7。
我希望在批处理文件中使用DOS命令完成此操作。我有一些编程背景,但我遇到了错误,CMD.exe不是最好的故障排除编程环境。这是我到目前为止所做的,
FOR /R "C:\Documents and Settings\" %%G in (.) DO (
Pushd %%G
FOR /f %%D in (%%G\Desktop) do (
if exist %%D\*.* COPY
%%D\*.* "D:Users\%%G\Desktop")
FOR /f %%F in (%%G\Favorites) do (
if exist %%F\*.* COPY
%%F\*.* "D:Users\%%G\Favorites")
Popd )
我希望上面的代码遍历每个用户文件夹(在文档和设置中找到)并将子文件夹'Desktop'和'Favorites'复制到具有相同布局的远程服务器。现在我收到错误,说系统无法找到文件。但是,只需用echo命令替换2 for循环,它就会告诉我它已正确浏览每个用户子文件夹。然后每个for循环将东西从单个文件夹复制到另一个单个文件夹。但是当我尝试将它们组合起来时,它失败了。
如果有更简单的方法将每个用户文件夹中的2个子文件夹复制到新位置并将它们保存为每个用户文件夹的子文件夹,我没有理由认为它必须在批处理文件中完成。我只是没有时间手动浏览每个文件夹。复制桌面和收藏夹,移动到远程服务器,创建该用户文件夹,粘贴桌面和收藏夹,并重复超过20个用户。有些用户比其他用户大得多,手动移动它们可能需要几个小时。
这是我在这里的第一篇文章,希望它简明扼要。
提前感谢大家,在我拥有此帐户之前,我已经从这个网站获得了很多帮助。
答案 0 :(得分:0)
FOR /R "C:\Documents and Settings\" %%G in (.) DO (
将遍历"C:\Documents and Settings\"
中的每个文件夹(和子文件夹),但是此脚本会将每个子文件夹视为用户的文件夹,并尝试从中复制桌面和收藏夹,这是可能不是你想要的。代码中的两个for
循环也不是真的需要。
以下代码使用for /d
。 copy
并不是一个很好的工具,因为它不会复制文件夹,应该使用其他实用程序。因此,此代码仅复制主文件夹中的文件,而不复制任何子文件夹中的文件。
for /d %%G in ("C:\Documents and Settings\") do (
if exist %%G\Desktop\*.* (
copy %%G\Desktop\*.* "D:\Users\%%~nxG\Desktop"))
if exist %%G\Favorites\*.* (
copy %%G\Favorites\*.* "D:\Users\%%~nxG\Favorites"))
)
由于%%G
包含绝对路径,%%~nxG
仅获取文件夹的名称和扩展名(以防名称中包含.
个字符),以便{ {1}}会奏效。由于"D:\Users\%%~nxG\Desktop"
包含此代码中的绝对路径,因此也不需要pushd
和popd
。