我基本上需要從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!' –