如何将多个文本文件移动到几个列出的目录?

时间:2014-08-09 07:02:46

标签: file batch-file

我有这个代码将几个列出的文本文件移动到几个列出的目录。

set /P "from=from: "
set /P "to=to: "
for /L %%a in (%from%,1,%to%) do move %%a.txt %%a^\file.txt
echo Done..
pause;>nul

以下文件

1.txt
2.txt
3.txt
4.txt
5.txt

移动到下面的目录中

\1
\2
\3 
\4
\5

将每个文件移动到具有相同名称的目录,并通过执行命令将文本文件的名称更改为默认file.txt

move 1.txt 1\file.txt
move 2.txt 2\file.txt
move 3.txt 3\file.txt
move 4.txt 4\file.txt
move 5.txt 5\file.txt

但我需要更新我的代码以移动下面列出的几个文本文件

1.txt
2.txt
3.txt
4.txt
5.txt

到下面列出的几个列出的目录,其名称存储在名为listed_directories.txt的文本文件中

768643
234893
9890f8
uk573d
kiodk3

我想要一个导致执行命令的代码:

move 1.txt 768643\file.txt
move 2.txt 234893\file.txt
move 3.txt 9890f8\file.txt
move 4.txt uk573d\file.txt
move 5.txt kiodk3\file.txt

我在这里停下来:

@ECHO OFF
setlocal EnableDelayedExpansion
color 0a
set /P "from=from: "
set /P "to=to: "
FOR /F "tokens=1 delims= " %%N IN (listed_directories.txt) DO set R=%%N & for /L %%a in (%from%,1,%to%) do move %%a.txt %%N\file.txt
echo Done..
pause;>nul

有人知道如何编写批处理文件以获得所需的文件移动吗?

2 个答案:

答案 0 :(得分:0)

我希望这些代码行是你在寻找的东西:

  

@ECHO OFF
  setlocal EnableDelayedExpansion
  设置/ P“STARTNUMBER =来自:”
  设置/ P“ENDNUMBER = To:”
  设置NAMEFILE =%STARTNUMBER%

     

FOR / F“delims =¶”%% N IN(listed_directories.txt)DO(

     

move!NAMEFILE!.txt %% N \ file.txt

     

if!NAMEFILE! EQU%ENDNUMBER%(echo Done)否则(
  set / a NAMEFILE =!NAMEFILE!+1
  )
  )

     

暂停> NUL

这个简短的脚本允许您获取上一个示例中的内容。你试图得到这个结果 - 我的意思是for循环在另一个for周期内 - 产生一个正确的递归任务,理论上(我还没有测试过),结果是:

  

move 1.txt 768643 \ file.txt
[...]
移动5.txt 768643 \ file.txt
移动1.txt   234893 \ file.txt
[...]
移动5.txt 234893 \ file.txt

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL

set /P "from=from: "
set /P "to=to: "
for /L %%a in (%from%,1,%to%) do IF EXIST %%a.txt (
 FOR /f "tokens=1*delims=:" %%r IN ('findstr /n /r "." q25216106.txt') DO (
  IF %%r==%%a ECHO(move %%a.txt "%%s\file.txt"
 )
)
pause
GOTO :EOF

这应该移动
 1.txt到第一行 \ file.txt 中给出的目录  2.txt到第二行 \ file.txt 中给出的目录 依此类推,但仅限于您指定为输入范围内的行。

为了测试目的,所需的MOVE命令仅为ECHO在您确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。附加>nul以取消报告消息(例如1 file moved

我使用了一个名为q25216106.txt的文件,其中包含我的测试数据。