我想讓cmd在它自己的變量中輸入所有文件。 示例:make cmd把dir中的所有文件放到它自己的變量中
C:\>dir/b systemlogs.txt projects.bat C:\>echo %file1% systemlogs.txt C:\>echo %file2% projects.bat
任何提示?任何代碼我可以使用?
我想讓cmd在它自己的變量中輸入所有文件。 示例:make cmd把dir中的所有文件放到它自己的變量中
C:\>dir/b systemlogs.txt projects.bat C:\>echo %file1% systemlogs.txt C:\>echo %file2% projects.bat
任何提示?任何代碼我可以使用?
像這樣的東西應該工作:
@echo off
setlocal EnableDelayedExpansion
cd /d "C:\some\folder"
set a=0
for %%f in (*) do (
set /a a+=1
set "file!a!=%%~ff"
)
set b=0
for /d %%d in (*) do (
set /a b+=1
set "folder!b!=%%~fd"
)
for /l %%i in (1,1,%a%) do echo %%i: !file%%i!
for /l %%i in (1,1,%b%) do echo %%i: !folder%%i!
endlocal
你不需要在延期擴展的情況下,在'call set file!a!= %%〜ff'中調用''。 – Endoro
你能告訴我如何獲取文件名,而不是完整的路徑和文件名 –
用'%%〜nxf'替換'%%〜ff'。 –
試試這個:
@echo off &setlocal enabledelayedexpansion
set /a counter=0
for %%i in (systemlogs.txt projects.bat) do (
set /a counter+=1
set "file!counter!=%%i"
)
set "file"
..output是:
file1=systemlogs.txt
file2=projects.bat
背後的概念 「在它自己的變量中的每個文件」 是稱爲_array_。看到這篇文章:http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990#10167990 – Aacini