2013-06-03 31 views
1

我想讓cmd在它自己的變量中輸入所有文件。 示例:make cmd把dir中的所有文件放到它自己的變量中

 
C:\>dir/b 
systemlogs.txt 
projects.bat 

C:\>echo %file1% 
systemlogs.txt 

C:\>echo %file2% 
projects.bat 

任何提示?任何代碼我可以使用?

+0

背後的概念 「在它自己的變量中的每個文件」 是稱爲_array_。看到這篇文章:http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990#10167990 – Aacini

回答

0

像這樣的東西應該工作:

@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 
+2

你不需要在延期擴展的情況下,在'call set file!a!= %%〜ff'中調用''。 – Endoro

+0

你能告訴我如何獲取文件名,而不是完整的路徑和文件名 –

+0

用'%%〜nxf'替換'%%〜ff'。 –

1

試試這個:

@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 
相關問題