通过文本文档列表批量处理文件

时间:2014-02-04 14:31:17

标签: batch-file batch-processing

我正在尝试使用批处理来实现一些文件控制。

基本思想是提供了一个文本文件,其中包含文件和文件夹路径列表。

我需要做的是将这些名称文件移动到引用相同文件夹结构的另一个位置。文件夹路径也有所不同,有些可以是2个深度,最多4个。

批处理的原因是它一次可能有数百个文件,因此手动处理既费时又费力。

文本文件输入的示例是:

copier\spc240\parts.cat\M095_M096_CHN_V1.05.pdf
copier\spc240\parts.cat\M095_M096_NA_V1.06.pdf
copier\spc240\parts.cat\M099_M100_NA_V1.10.pdf
copier\spc240\parts.cat\M100_CHN_V1.10.pdf
options\df3090\D779_21_V1.01.pdf
options\pb3190\D747_27_V1.00.pdf

以下是我迄今为止所做的工作:

@echo off
set "file=deletes.txt"
set /A i=0
for /F "usebackq delims=*" %%a in ("%file%") do (
set /A i+=1
call set array[%%i%%]=%%a
call set n=%%i%%
)
for /L %%i in (1,1,%n%) do (
echo|set /p="move %%array[%%i]%% moved\%%array[%%i]%%">>Test.txt 
echo.>>Test.txt
)
echo pause>>Test.txt
rename Test.txt RunMe2Move.bat
pause

这对我来说当前做的是制作一个可以单独运行的批处理文件,但这是我绊倒的地方。这个错误作为目标文件夹不存在,我不熟悉批处理中的数组,以分割文本行,使我能够使用mkdir丢失文件夹或修剪文件名。

本质上,我试图为文本文件中的每一行处理或输出以下代码行(使用copier \ spc240 \ parts.cat \ M095_M096_CHN_V1.05.pdf作为示例)。

mkdir moved\copier\spc240\parts.cat\
move copier\spc240\parts.cat\M095_M096_CHN_V1.05.pdf moved\copier\spc240\parts.cat\

最终我试图在一个文件中完成所有这些,如果可能的话,输出就在那里,所以我可以检查一下。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

for /f "delims=" %%a in (%file%) do (
    SET "fpath=%%~a"
    SETLOCAL enableDelayedExpansion
    SET "fpath=!fpath:%%~nxa=!"
    md "moved\!fpath!"
    move "%%~a" "moved\!fpath!"
    ENDLOCAL
)