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


    已经测试,没有问题,非常感谢大大们的帮助!!!

TOP

本帖最后由 qixiaobin0715 于 2024-4-11 08:48 编辑

findstr有时是好用,但总觉得尽量少用为好,findstr属于外部命令,调用时其效率要差些,特别是在循环体内调用且又使用了管道命令效率更差些。
  1. @echo off
  2. for /f "delims=" %%i in ('dir /s /b /ad') do (
  3.     if exist "%%i\*.symlink" (
  4.         set n=
  5.         for /f "delims=" %%j in ('dir /b /ad "%%i"') do set n=true
  6.         if not defined n (
  7.             move "%%i\*.symlink" "%%i\.."
  8.             rd /s /q "%%i"
  9.         )
  10.     )
  11. )
  12. pause
复制代码
以上代码未经测试,可能会有问题,但大体思路应当是这样。运行代码前请备份好源文件,以免出现意外。
1

评分人数

    • 77七: 感谢分享技术 + 1

TOP

批处理批量解决移动指定类型文件到上一级目录中【已解决】

回复 6# 77七

感谢兄弟 已经测试完美解决我的问题 棒棒哒!

TOP

回复 3# mmm8422616


  
  1. @echo off
  2. cd /d "%~dp0"
  3. set str=symlink
  4. for /f "delims=" %%d in ('dir /b /s /ad') do (
  5. dir /b /ad "%%d" |findstr . 1>nul || set _"%%d"=1
  6. )
  7. for /f "delims=" %%d in ('dir /b /s /ad') do (
  8. if defined _"%%d" (
  9. if exist "%%d\*.%str%" (
  10. move "%%d\*.%str%" "%%d\.."
  11. del /q "%%d\*"
  12. rd "%%d"
  13. )
  14. )
  15. )
  16. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 3# mmm8422616


V2.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. set "ExtList=symlink jgp nfo"
  4. for /f "delims=" %%d in ('dir /b /s /ad ^|sort /r') do (
  5.     for %%i in (%ExtList%) do (
  6.         move "%%d\*.%%i" "%%d\.."
  7.     )
  8.     del /q "%%d\*"
  9.     rd "%%d"
  10.     pause
  11.     exit /b
  12. )
复制代码
测试代码之前请做好备份

TOP

回复 3# mmm8422616


V1.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. set "ExtList=symlink jgp nfo"
  4. for %%i in (%ExtList%) do (
  5.     call :ExecRelocate %%i
  6. )
  7. goto :eof
  8. :ExecRelocate
  9. for /f "delims=" %%d in ('dir /b /s /ad ^|sort /r') do (
  10.     move "%%d\*.%1" "%%d\.."
  11.     del /q "%%d\*"
  12.     rd "%%d"
  13.     pause
  14.     exit /b
  15. )
复制代码
测试代码之前请做好备份

TOP

回复 2# 77七

刚刚试了下 好像不对啊 把最后一级目录下的symlink移动了二级目录里面 然后其他类似的文件夹下的没有动

TOP

  1. @echo off
  2. cd /d "%~dp0"
  3. set str=symlink
  4. for /f "delims=" %%d in ('dir /b /s /ad ^|sort /r') do (
  5. move "%%d\*.%str%" "%%d\.."
  6. del /q "%%d\*"
  7. rd "%%d"
  8. pause
  9. exit
  10. )
复制代码
bat小白,请多指教!谢谢!

TOP

返回列表