batch/bat - 以包含目录列表的文本文件作为输入的移动函数

batch/bat - Move function with as input a text file with list of directories

我正在写一个bat文件,想添加一个移动功能。这个想法是我有一个 .txt 文件,每行都有一个相对 path\file.

例如 - 这只是一个随机示例:

Data\English\caust00.tga

Data\English\Specific\caust01.tga

Data\caust00.tga

Data\caust00

目前我只有一个删除功能,这很简单,因为它不需要额外的变量集。 (显然,“数据”中还有更多文件,否则我会移动整个文件夹)。

假设上面4行保存在Test.txt中,那就只有这一行:

for /F "tokens=*" %%A in (Test.txt) do del "%%A"

删除所有 4 个文件。现在这很好,但我想实现一个移动功能:即它创建一个新文件夹,在里面说“Temp1”——这取决于“Test.txt”的内容:

Data\English\caust00.tga

Data\English\Specific\caust01.tga

Data\caust00.tga

Data\caust00

我希望你没有迷路。我很想收到一些建议,因为我几乎不知道该怎么做。

编辑: 所以,我有一个名为“Data”的文件夹,里面有很多子文件夹和文件。 我还有一个包含以下内容的文本文件:

Data\Movie\caust00.tga

Data\Movie\caust01.tga

Data\caust02.tga

Data\caust03.tga

Data\WaterPlane\SCCSpyDrone.ani

Data\WaterPlane\SCCStop.ani

Data\WaterPlane\SCCTimedChg.ani

现在我想实现一个移动功能,将这些文件移动到一个新文件夹“Test”,这样我们就可以得到:

Test\Data\Movie\caust00.tga

Test\Data\Movie\caust01.tga

Test\Data\caust02.tga

Test\Data\caust03.tga

Test\Data\WaterPlane\SCCSpyDrone.ani

Test\Data\WaterPlane\SCCStop.ani

Test\Data\WaterPlane\SCCTimedChg.ani

试试这个:

mkdir C:\DestFolder\
move C:\SourceFolder\*.* C:\DestFolder\

这会将所有文件从 SourceFolder 移动到 DestFolder

编辑:

如果你改为这样做会怎样:

如果您有以下文件夹结构:

    SourceFolder
     |-move.bat
     |-FilesToMove.txt
     |-1.txt
     |-2
       |-2.txt

其中 FilesToMove.txt 包含:

1.txt 
2.txt

move.bat 看起来像这样:

for /F "tokens=*" %%A in (FilesToMove.txt) do call:moveFunc %%A C:\DestFolder\

:moveFunc
md %2\%1\..\ 2> nul
move %1 %2\%1

如果您现在 运行 move.bat1.txt2.txt 将移至 C:\DestFolder。这是否满足您的需求?