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

[文件操作] 批处理脚本实现将与 BAT 文件同路径下的文件夹移动到指定路径

@echo off
setlocal enabledelayedexpansion

rem 获取当前批处理文件所在路径
set "currentPath=%~dp0"

rem 指定目标文件夹路径
set "targetFolder=C:\your\target\folder\path"

rem 遍历当前路径下的文件夹
for /d %%i in ("%currentPath%\*") do (
    rem 获取文件夹名称
    set "folderName=%%~nxi"
    rem 拼接目标路径
    set "newPath=%targetFolder%\!folderName!"
    rem 移动文件夹
    move "%%i" "!newPath!"
)

echo 移动完成。
pause

执行后显示拒绝访问,移动了0个目录
请问应如何改写?谢谢

本帖最后由 aloha20200628 于 2024-9-27 14:18 编辑

回复 1# 无我居士
跨盘区移动目录会让 move 罢工,改用 robocopy 可一步到位,robocopy 默认用8个线程开工,效率会倍增...
  1. @echo off
  2. set "currentPath=%~dp0"
  3. set "targetFolder=C:\your\target\folder\path"
  4. cd /d "..\"
  5. robocopy "%currentPath:~,-1%" "%targetFolder%" /s /move /xF "%~f0"
  6. pause&exit/b
复制代码

TOP

  1. @echo off
  2. rem 保存为ansi编码
  3. cd /d "%~dp0"
  4. rem 指定目标文件夹路径
  5. set "targetFolder=C:\your\target\folder\path"
  6. rem 遍历当前路径下的文件夹
  7. for /d %%d in (*) do (
  8. robocopy "%%d" "%targetFolder%\%%d" /e /move
  9. )
  10. echo 移动完成。
  11. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 2# aloha20200628

对2楼代码作了一点订正,运行结果会保留批处脚本文件所在的目录和该脚本文件

TOP

本帖最后由 aloha20200628 于 2024-9-28 09:08 编辑

回复 1# 无我居士

一楼的代码精简后也可以用(如下),但须注意被移动目录不能还有其他程序占用:
  1. @echo off
  2. set "currentPath=%~dp0"
  3. set "targetFolder=C:\your\target\folder\path"
  4. for /d %%d in ("%currentPath%*") do move "%%d" "%targetFolder%\%%~nxd"
  5. pause&exit/b
复制代码
补一个更正》用 move 移动实际是更名操作,并非物理移动,效率也很高,但限于同盘区操作。

TOP

返回列表