【问题标题】:Set variables for each line of a txt file in a batch code在批处理代码中为 txt 文件的每一行设置变量
【发布时间】:2016-04-01 13:12:24
【问题描述】:

有没有办法将 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

有没有办法做到这一点,而不知道有多少驱动器并且不会导致错误?

【问题讨论】:

  • 没看懂你的问题,你的意思是用set c= C之类的吗?:
  • 你试过什么?你在哪里卡住?我也很难理解,为什么要依靠 txt 文件来查找计算机上的驱动器?为什么不使用 for /f 循环从 wmic logicaldisk... 捕获所需的输出并用一块石头杀死 2 只鸟?
  • 我对编程很陌生,你会如何用 for /f 循环解决这个问题?我肯定会尝试的。

标签: variables batch-file text


【解决方案1】:

有没有办法做到这一点,不知道有多少驱动器 并且不会导致错误?

你应该这样做:

@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

【讨论】:

  • 这对我有用。有没有办法在不知道找到多少驱动器的情况下将刚刚执行的文件复制到所有找到的驱动器?
  • @DonaldTrump 您能否编辑您的问题并发布您迄今为止尝试过的代码!并为您的目标提供更多信息!
  • @DonaldTrump 检查我上次的编辑,如果没问题,那么你可以在复制之前摆脱回声!
  • @Hackoo 而不是打扰set /a i += 1set drive... 你可以if not exist "%%a:\%~nx0" copy "%~f0" %%a:\
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2018-03-07
  • 1970-01-01
  • 2022-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
相关资源
最近更新 更多