[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样移动文件到第一层文件夹?

本帖最后由 comicguests 于 2012-6-27 15:13 编辑

下面的代码能移动文件到根目录,但我想移动到第一层文件夹...应该如何修改呢?
感谢关注!!
  1. @echo off
  2. echo 移动文件中...
  3. for /f "delims=" %%i in ('dir *.* /a-d /s /b') do (
  4.     if not "%%~dpi"=="%~dp0" call :movefile "%%i"
  5. )
  6. echo 移动文件完成!
  7. exit
  8. :movefile
  9. if exist "%~dp0%~nx1" set "n="&goto renfile
  10. move %1 "%~dp0">nul 2>nul||(attrib -r -h -s %1& move %1 "%~dp0">nul)
  11. goto :eof
  12. :renfile
  13. set/a n+=1
  14. if exist "%~dp0%~n1(%n%)%~x1" goto renfile
  15. move %1 "%~dp0%~n1(%n%)%~x1">nul 2>nul||(
  16. attrib -r -h -s %1& move %1 "%~dp0%~n1(%n%)%~x1">nul)
  17. goto :eof
复制代码
嗯,1楼所言甚是,那么,将e:\a\b\c\*里的文件,全移到e:\a里(包含b、c中全部文件)

所以我就怀疑是不是系统的个别差异...

TOP

本帖最后由 FOR 于 2012-7-4 12:53 编辑

我也是 win7 32位旗舰版
19、24楼的代码我这里都能成功
12楼的代码能正常运行,怎么24楼的就会不行呢??

TOP

回复 24# FOR


    多次劳烦您,真是十分感谢,但还是只显示移动,但没有移动...是我系统问题么?
win732位旗舰版
ps:实在不行就只能放弃了...

TOP

回复 22# powerbat
  1. 系统找不到指定的文件。
  2. 系统找不到指定的文件。
  3. 系统找不到指定的文件。
  4. 系统找不到指定的文件。
  5. 系统找不到指定的文件。
  6. 系统找不到指定的文件。
  7. 系统找不到指定的文件。
  8. 系统找不到指定的文件。
  9. 系统找不到指定的文件。
  10. 系统找不到指定的文件。
  11. 系统找不到指定的文件。
  12. 系统找不到指定的文件。
  13. 系统找不到指定的文件。
  14. 系统找不到指定的文件。
  15. 系统找不到指定的文件。
  16. 请按任意键继续. . .
复制代码
汇报结果!
执拗么...我倒是感觉自己性格不好...

TOP

再试试这个
  1. @echo off&set /a n=1
  2. call :Loop "%cd%"
  3. :loop
  4. for /f "tokens=1* delims=\" %%i in ("%~1") do (
  5. set /a n+=1
  6. if not "%%j"=="" call :Loop "%%j"
  7. )
  8. for /f "delims=" %%I in ('dir/b/s/a-d') do (
  9. for /f "tokens=%n%* delims=\" %%a in ("%%I") do (
  10. if not "%%b"=="" move "%%I" "%cd%\%%a"
  11. )
  12. )
  13. pause
复制代码

TOP

19楼代码我实际测试是成功的。

TOP

  1. @echo off
  2. for /f "delims=" %%i in ('dir /a-d/b/s') do move "%%a"
  3. pause
复制代码

TOP

回复 13# comicguests


无语,没见过这么执拗的人。

TOP

回复 19# FOR


   没有,试了一下,还是不行...

TOP

多打了个括弧,你那里没提示“以达到最大递归层”吗?
  1. @echo off
  2. for /f "delims=" %%i in ('dir/b/s/a-d') do (
  3.         set "str=%%i"
  4.         setlocal enabledelayedexpansion
  5.         set "str=!str:*%cd%=!"
  6.         for /f "tokens=1 delims=\" %%a in ("!str!") do (
  7.                 if not "%%i"=="!cd!\%%~nxi"  move "%%i" "!cd!\%%a"
  8.         )
  9.         endlocal
  10. )
  11. pause
复制代码

TOP

回复 17# FOR
  1. 移动了         1 个文件。
  2. 移动了         1 个文件。
  3. 移动了         1 个文件。
  4. 移动了         1 个文件。
  5. 移动了         1 个文件。
  6. 移动了         1 个文件。
  7. 移动了         1 个文件。
  8. 移动了         1 个文件。
  9. 移动了         1 个文件。
  10. 移动了         1 个文件。
  11. 移动了         1 个文件。
  12. 请按任意键继续. . .
复制代码
运行后显示以上内容,但文件实际未移动...
但感谢帮助!!

TOP

本帖最后由 FOR 于 2012-7-3 01:43 编辑
  1. @echo off
  2. for /f "delims=" %%i in ('dir/b/s/a-d') do (
  3. set "str=%%i"
  4. setlocal enabledelayedexpansion
  5. set "str=!str:*%cd%=!"
  6. for /f "tokens=1 delims=\" %%a in ("!str!") do (
  7. if not "%%i"=="!cd!\%%~nxi" move "%%i" "!cd!\%%a"
  8. )
  9. endlocal
  10. )
  11. pause
复制代码

TOP

回复 15# forfiles


    试了一下,原来是这样,感谢!!

TOP

回复 13# comicguests


比如,你要查看C:\test的目录结构:
开始
运行
cmd
tree /f "C:\test"

TOP

返回列表