在批处理代码中为txt文件的每一行设置变量

时间:2016-04-01 13:12:24

标签: variables batch-file text

有没有办法将txt文档的每一行设置为批处理文件中的不同变量?我有一个txt文件,其中包含计算机上的所有驱动器。如果可以的话,如何将每一行(对于每个驱动器)设置为不同的变量?

我有一个文件,它将所有可用的驱动器写入文本文件中。我想读出这个文件,并为每行文本设置一个不同的变量。例如:

    DeviceID  
    C:        
    D:        
    E:        

现在" DeviceID"将是第一个变量。 " C:" " d:"和" E:"都是个人变量。我希望你明白我的意思。

提前致谢!

好的,所以我试过这个:

@echo off
setlocal enabledelayedexpansion
set i=0
for /f "tokens=2 delims=:=" %%a in ('wmic logicaldisk get name /value ') do (
  set /a i+=1
  set drive[!i!]=%%a
)
set drive
pause
copy %0 %drive[1]%:\%random%.bat
pause

它运作良好。但我想将当前执行的文件复制到所有找到的驱动器而不键入:

copy %0 %drive[1]%:\currentlyexecutedfile.bat
copy %0 %drive[2]%:\currentlyexecutedfile.bat
copy %0 %drive[3]%:\currentlyexecutedfile.bat
copy %0 %drive[4]%:\currentlyexecutedfile.bat

有没有办法做到这一点,不知道有多少驱动器而且没有造成错误?

1 个答案:

答案 0 :(得分:2)

  

有没有办法做到这一点,却不知道有多少驱动器   并且没有造成错误?

你应该这样做:

@echo off
setlocal enabledelayedexpansion
set i=0
for /f "tokens=2 delims=:=" %%a in ('wmic logicaldisk get name /value ') do (
  set /a i+=1
  set drive[!i!]=%%a
)
Rem set drive
Rem If you don't know how many elements the array have (that seems is the case), you may use this method:
for /F "tokens=2 delims==" %%s in ('set drive') do (echo Copy %0 "%%s:\currentlyexecutedfile.bat")
pause