[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
先谢谢楼上的兄弟,我试试,另外13楼的兄弟写的代码可用。但是文件名不能带“()”。

TOP

15楼的兄弟的代码我试了一下,不能移动文件夹。

TOP

应该是空文件夹没有删除吧,再试试,以修改过。

TOP

楼上的兄弟,代码我测试了一下,还是不行,不支持文件夹,文件夹没有移动过去,而且把原文件夹删除掉了。
另外十三楼的兄弟的代码好像不支持U盘上的文件 。

TOP

十三楼的代码在硬盘中测试基本上没有什么问题,就是文件名不能带“()”。但是如果是移动U盘中的文件或者文件夹,那么一次只能移动一个。十五楼的兄弟的代码我测试了一下,不支持移动文件夹,只能批量移动文件。但是可以批量移动U盘中的文件。

TOP

再试试~。。。。。。。。。。。。。。。。。。

TOP

  思路:用 %* 来接收多个参数,然后,用move移动文件及同分区内的文件夹,当移动跨分区的文件夹失败时,用xcopy来移动,移动完之后删除源文件夹即可。

  试试如下代码:
  1. @echo off
  2. md d:\123 2>nul
  3. for %%i in (%*) do (
  4.     move /y "%%~i" d:\123 2>nul||(
  5.         xcopy /e /s /k /o /q /y "%%~i" "d:\123\%%~nxi\"&&rd /q /s "%%~i"
  6.     )
  7. )
  8. pause
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

感谢管理员的代码,很好用。简单测试了一下,还没发现对文件名有什么特殊要求。
同时也感谢以上所有提供帮助的朋友。

非常感谢。

TOP

测试了,很好,只是文件名不能有“()”。谢谢

同时也感谢所有给我提供帮助 的朋友。

TOP

我测试过了带括号的文件名,是可以的,不知道你用的什么样的文件名,请给个例子看看。
另外,你的系统是什么环境?我的是WinXP_Sp3。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

正是不好意思,是我的失误。带括号的文件夹是可以移动的,文件名中有空格的文件夹不能移动。能否再想想办法?

TOP

呵呵,失误失误,在用xcopy复制文件夹的时候,对目的路径没有用引号括起来,导致出错。
22楼的代码已经更新了,请再次测试。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

测试了一下,现在又出现了其它问题。对于本地硬盘上的文件及文件夹已经没问题了,但是如果是移动U盘上的文件的话,那么文件名里面不能有括号。

[ 本帖最后由 smallbear 于 2010-4-5 21:11 编辑 ]

TOP

U盘上的文件正在测试中。

  22楼的代码利用了cmd窗口的一个特性:当把文件拖曳到cmd窗口的时候,会把文件名扩展到全路径,其中,带空格或&字符的路径会自动在首尾添加引号对;如果路径中不存在这些特殊字符,则不会带引号对。
  由于for语句中,in和do之间是括号对,如何让for识别for自身的括号对和路径中的括号对,则是个十分难办的事情:当所有的路径都带有空格或&字符的时候,cmd会自动为每一条路径带上引号对,在for语句中不会出现问题;当不是所有的路径中都带有空格或&字符的时候,路径中引号对和非引号对的路径是混杂的,在for语句中,由于无法识别路径中的括号和for自身的括号,会造成for语句无法执行。

  综上所述,并不是文件是不是位于U盘上的问题,而是每一个文件的完整路径中是否同时带有空格或&字符的问题。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

我的xp sp2 无法处理含&符号的文件名
@echo off
echo %*
pause
遇到 c:\a&b 这样的文件夹就只显示 c:\a

TOP

返回列表