2017-09-25 89 views
0

我正在使用DOS批处理脚本。接受批处理文件的自定义输入?

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

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

工作站名称可以是3种可能性的数字格式:w0001,w0010或w0100。因此,如果我输入1-250,它可以是以下三种格式中的任何一种: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,但他们只似乎能够接受像(1, 1,10)或(filename.txt)。在“set”字段中。我需要一个用户能够输入像1-250这样简单的东西。

在此先感谢。

回答

0

我不清楚你在问什么。

要迭代的范围内,输出与四个地方的一些尝试这个办法:

@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分割在负/连字符的VAR range内容为两部分和第一个存储到start加入10000和第二个到stop也加入10000.
  • for /l重复从开始(步骤1)到停止的范围。
  • 使用substrings我们需要一个正常变量,以便对可变%%L被存储在可变L
  • ,因为这发生在(括号内码块),我们需要delayedexpansion
+0

感谢您的答复。我不明白的是为什么你在FOR命令中的每个变量后加上+10000。而在ECHO输出中,我不明白这些角色的意义! :〜-4。 – dirkd

+0

在比较最后4个字符时具有前导零,并且在比较时具有唯一长度 – LotPings

+0

我需要一位数字前三位0,两位数二位0,三位数字一位0.因此,如果我输入1- 120作为输入,它应该如下输出:w0001,w0002 ...... w0050,w0051 ...... w0100,w0120等。另外,你能解释一下吗?L:〜-4!或参考文章?谢谢。 – dirkd