标题: [文件操作] 批处理脚本实现将与 BAT 文件同路径下的文件夹移动到指定路径 [打印本页]
作者: 无我居士 时间: 2024-9-27 10:06 标题: 批处理脚本实现将与 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 11:28
本帖最后由 aloha20200628 于 2024-9-27 14:18 编辑
回复 1# 无我居士
跨盘区移动目录会让 move 罢工,改用 robocopy 可一步到位,robocopy 默认用8个线程开工,效率会倍增...- @echo off
- set "currentPath=%~dp0"
- set "targetFolder=C:\your\target\folder\path"
- cd /d "..\"
- robocopy "%currentPath:~,-1%" "%targetFolder%" /s /move /xF "%~f0"
- pause&exit/b
复制代码
作者: 77七 时间: 2024-9-27 13:44
- @echo off
- rem 保存为ansi编码
- cd /d "%~dp0"
- rem 指定目标文件夹路径
- set "targetFolder=C:\your\target\folder\path"
-
- rem 遍历当前路径下的文件夹
- for /d %%d in (*) do (
- robocopy "%%d" "%targetFolder%\%%d" /e /move
- )
- echo 移动完成。
- pause
复制代码
作者: aloha20200628 时间: 2024-9-27 14:22
回复 2# aloha20200628
对2楼代码作了一点订正,运行结果会保留批处脚本文件所在的目录和该脚本文件
作者: aloha20200628 时间: 2024-9-27 15:21
本帖最后由 aloha20200628 于 2024-9-28 09:08 编辑
回复 1# 无我居士
一楼的代码精简后也可以用(如下),但须注意被移动目录不能还有其他程序占用:- @echo off
- set "currentPath=%~dp0"
- set "targetFolder=C:\your\target\folder\path"
- for /d %%d in ("%currentPath%*") do move "%%d" "%targetFolder%\%%~nxd"
- pause&exit/b
复制代码
补一个更正》用 move 移动实际是更名操作,并非物理移动,效率也很高,但限于同盘区操作。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |