4

我正在尝试执行某项任务,我需要从可能具有未定义数量的文件的文件夹中读取文件(一次一个)。我需要能够将文件夹中的第一个文件移动到新位置,然后使用另一个批处理文件执行另一个任务。主要目的是一次读取一个文件,而不是执行 *.* 它将读取所有文件立刻。任何帮助,将不胜感激 !谢谢

4

3 回答 3

4

您可以使用类似这样的 for 命令:

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
)
于 2009-07-07T21:26:18.490 回答
2

我想你可能想看看forfiles

选择并在一个文件或一组文件上执行命令。此命令对批处理很有用。

于 2009-07-07T20:53:47.167 回答
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 .. 
   )
)

这里有一些细节

于 2009-07-07T22:18:33.547 回答