我有这个代码将几个列出的文本文件移动到几个列出的目录。
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
有人知道如何编写批处理文件以获得所需的文件移动吗?
答案 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
的文件,其中包含我的测试数据。