我基本上需要从Windows命令行的目录中获取文件名列表,并获取每个文件名并将其与另一个命令行语句组合。加入命令行语句
D:\Data
file1.txt
file2.txt
与合并文件:
copy file1.txt file3.txt
copy file2.txt file4.txt
我知道上面可能没有什么意义。我想从概念上理解如何完成任务。任何帮助是极大的赞赏。
我基本上需要从Windows命令行的目录中获取文件名列表,并获取每个文件名并将其与另一个命令行语句组合。加入命令行语句
D:\Data
file1.txt
file2.txt
与合并文件:
copy file1.txt file3.txt
copy file2.txt file4.txt
我知道上面可能没有什么意义。我想从概念上理解如何完成任务。任何帮助是极大的赞赏。
这个for
将循环遍历d:\ data中的所有文件,并为每个文件写出类似copy file1.txt targetname.txt
的内容。我不知道如何形成目标文件的名称,但我认为这至少可以回答您如何对文件夹中的每个文件执行某些操作的问题。
setlocal enabledelayedexpansion
for /f %%f in ('dir "d:\data" /b /a-d') do (
set filename=%%f
echo Do something with !filename!
)
假设,你已经在当前目录file1.txt ... file4.txt
,试试这个:
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /a-d /b /on file?.txt') do (
set "file1=!file2!"
set "file2=!file3!"
set "file3=%%~i"
if not "!file1!"=="" echo copy !file1! !file3!
)
输出是:
copy file1.txt file3.txt
copy file2.txt file4.txt
感谢您的帮助。但这似乎并不适用于我。我实际上并不想复制每个文件的内容。我只是真的想将文件名复制到变量中,并使用文件名执行另一个命令。对困惑感到抱歉。 – Villumanati
好的,我已经更新了示例代码。现在我们启用延迟扩展,以便在'for'循环中你可以通过'set'来设置环境变量,然后使用延迟扩展来引用它:'!filename!' –