接受批处理文件的自定义输入?



我正在使用DOS批处理脚本。

是否有一种方法可以接受来自用户的输入,可以是自定义整数范围,例如 1-250?

我想接受来自用户的一系列工作站名称,例如 1-250,其中范围内的每个数字都可以循环访问,并根据数字发送到不同的命令。

工作站名称可以采用 3 种可能性的数字格式:w0001、w0010 或 w0100。因此,如果我输入 1-250,它可以是这 3 种格式中的任何一种:3 个前

导零表示一位数,2 个前导零表示两位数,或 1 个前导零表示三位数。像这样,仅以 SC 查询命令为例:

set "range="
set /p range="Please enter workstation range:"
DO(if %range% > 0)
(
IF %range% = 1 
DO SC \W000%range% query
IF %range% = 10
DO SC \W00%range% query
IF %range% = 100
DO SC \W0%range% query
)

我正在研究 FOR/L 或 FOR/F,但他们似乎只能在"set"字段中接受 (1,1,10) 或 (文件名.txt)之类的内容。我需要用户能够输入简单的东西,例如 1-250。

提前谢谢。

我不太清楚你在问什么。

要迭代输出具有四个位置的数字的范围,请尝试以下操作:

@echo off & setlocal enabledelayedexpansion
set "range="
set /p range="Please enter workstation range:"
set "start="
set "stop="
for /f "tokens=1,2 delims=-" %%A in ("%range%") do Set /A "start=%%A+10000,stop=%%B+10000"
if defined stop if %start% leq %stop% for /l %%L in (%start%,1,%stop%) do (
set "L=%%L"
Echo Processing \w!L:~-4!
Rem do whatever you like with the value 
)

示例运行:

> SO_46410755.cmd
Please enter workstation range:1-120
Processing \w0001
Processing \w0002
Processing \w0003
Processing \w0004
Processing \w0005
Processing \w0006
Processing \w0007
Processing \w0008
Processing \w0009
Processing \w0010
Processing \w0011
Processing \w0012
...
Processing \w0096
Processing \w0097
Processing \w0098
Processing \w0099
Processing \w0100
Processing \w0101
Processing \w0102
...
Processing \w0117
Processing \w0118
Processing \w0119
Processing \w0120
  • 第一个for /f将减号/连字符处的 varrange内容分成两部分,并将第一部分存储为start添加 10000,将第二部分存储为stop也添加 10000。
  • for /l迭代从开始(步骤 1)到停止的范围。
  • 要使用子字符串,我们需要一个普通变量,以便将 for 变量%%L存储在变量L
  • 由于这种情况发生在(括号中的代码块)中,我们需要延迟扩展

最新更新