我在这里看到的最接近的事情是使用命令“mv”,这显然不是Windows命令。 Windows“移动”命令将无法完成此任务。
我有一个文本文件,其中列出了需要移动的每个文件,显示其来自c:\的完整路径(例如C:\ di1 \ dir2 \ dir3 \ dir4 \ filetomove.png。 某些子目录名称中包含空格,并且没有标准顺序。有些可能是一层深,其他有5层深。
我想这样做,以便最终得到一个与旧版本完全相同的新列表,除了驱动器号是X:\而不是C:\
这些目录中还有许多其他文件,不应该触及它们。只有我正在使用的列表中的那些。
答案 0 :(得分:0)
实际上, Robocopy 更灵活,更不容易出错,但是这里有一些批处理“代码”来读取文本文件和每行(假设要移动的每个文件的完整路径是在一条线上):
DESTINATION_DRIVE
中的那个)move
命令失败的原因:因为目标父目录不存在。注意:如果存在与目标目录同名的文件,则移动操作显然会失败剧本:
@echo off
set DESTINATION_DRIVE=e
for /f "tokens=*" %%f in (files.txt) do (
call :move_file "%%f"
)
goto :eof
:move_file
set _SRC_DIR=%~dp1
set _DST_DIR=%DESTINATION_DRIVE%%_SRC_DIR:~1%
if not exist "%_DST_DIR%\nul" (
mkdir "%_DST_DIR%"
)
move %1 "%_DST_DIR%"
goto :eof
作为一个缺陷,移动文件后,脚本可能会在源驱动器上留下空目录。