0

好吧,在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 )

我希望上面的代码将遍历每个用户文件夹(在文档和设置中找到)并将子文件夹“桌面”和“收藏夹”复制到具有相同布局的远程服务器。现在我收到错误消息说系统找不到文件。但是,只需用 echo 命令替换 2 个 for 循环,它就会告诉我它已经正确地通过了每个用户子文件夹。然后每个 for 循环都会将内容从单个文件夹复制到另一个文件夹。但是当我尝试将它们结合起来时,它失败了。

如果有更简单的方法可以将每个用户文件夹中的 2 个子文件夹复制到新位置并将它们保留为每个用户文件夹的子文件夹,我没有理由必须在批处理文件中完成。我只是没有时间手动浏览每个文件夹。复制桌面和收藏夹,移动到远程服务器,创建该用户文件夹,粘贴桌面和收藏夹,然后重复 20 多个用户。一些用户比其他用户大得多,手动移动它们可能需要几个小时。

这是我在这里的第一篇文章,希望它简洁明了。

提前谢谢大家,在我拥有这个帐户之前,我已经从这个网站获得了很多帮助。

4

1 回答 1

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因此仅获取文件夹的名称和扩展名(以防名称中包含.字符),这样"D:\Users\%%~nxG\Desktop"就可以了。pushd并且popd也不需要,因为%%G此代码中包含绝对路径。

于 2013-05-03T16:12:47.723 回答