我正在尝试执行某个任务,我需要从一个文件夹中读取文件(一次一个),该文件夹可能有不确定数量的文件。我需要能够将文件夹中的第一个文件移动到新位置,然后使用另一个批处理文件执行另一个任务。主要目的是一次读取一个文件,而不是执行*。*,这将读取所有文件立刻。 任何帮助,将不胜感激 ! 感谢
答案 0 :(得分:4)
你可以使用这样的命令:
for /R c:\test\src %i IN (*.*) DO (
MOVE %i C:\test\dest
YourBatch.bat C:\test\dest\%~nxi
)
如果要将此命令放在批处理文件中,则需要将%符号加倍,如下所示:
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\dest
YourBatch.bat C:\test\dest\%%~nxi
)
在YourBatch.bat文件中使用%1%访问文件名,如下所示:
@echo off
type %1%
要仅处理一个文件,只需在第一个循环结束时退出:
for /R c:\test\src %%i IN (*.*) DO (
MOVE %%i C:\test\dest
YourBatch.bat C:\test\dest\%%~nxi
exit
)
答案 1 :(得分:2)
我想你可能想看看forfiles
:
在文件或文件集上选择并执行命令。此命令对批处理非常有用。
答案 2 :(得分:1)
这是另一种方法。它使用SET命令的一些扩展:
@echo off
setlocal ENABLEDELAYEDEXPANSION
FOR /f %%a IN ('dir /b') DO (
CALL SET /a x = !x! +1
if !x! == 1 (
REM do your work here. the call to move is an example
CALL ECHO moving %%a
CALL MOVE %%a ..
)
)
here是一些细节