相关疑难解决方法(0)

dos批处理迭代分隔的字符串

我有一个我想单独处理的IP分隔列表.列表长度提前未知.如何拆分和处理列表中的每个项目?

@echo off
set servers=127.0.0.1,192.168.0.1,10.100.0.1

FOR /f "tokens=* delims=," %%a IN ("%servers%") DO call :sub %%a

:sub
    echo In subroutine
    echo %1
exit /b
Run Code Online (Sandbox Code Playgroud)

输出:

In subroutine
127.0.0.1
In subroutine
ECHO is off.
Run Code Online (Sandbox Code Playgroud)

更新: 使用Franci的答案作为参考,这是解决方案:

@echo off
set servers=127.0.0.1,192.168.0.1,10.100.0.1

call :parse "%servers%"
goto :end


:parse
setlocal
set list=%1
set list=%list:"=%
FOR /f "tokens=1* delims=," %%a IN ("%list%") DO (
  if not "%%a" == "" call :sub %%a
  if not "%%b" == "" call :parse "%%b"
)
endlocal
exit /b

:sub …
Run Code Online (Sandbox Code Playgroud)

command-line batch-file

36
推荐指数
5
解决办法
9万
查看次数

如何正确报告批处理退出状态?

我面临一个奇怪的情况,我写的批处理文件报告错误的退出状态.这是一个重现问题的最小样本:

bug.cmd

echo before

if "" == "" (
        echo first if
        exit /b 1

        if "" == "" (
                echo second if
        )
)

echo after
Run Code Online (Sandbox Code Playgroud)

如果我运行这个脚本(使用Python但问题实际上也是以其他方式启动时),这就是我得到的:

python -c "from subprocess import Popen as po; print 'exit status: %d' % po(['bug.cmd']).wait()"
echo before
before

if "" == "" (
echo first if
 exit /b 1
 if "" == "" (echo second if )
)
first if
exit status: 0
Run Code Online (Sandbox Code Playgroud)

注意尽管应该如何exit status报告.0exit /b 11

现在奇怪的是,如果我删除了内部 …

python windows batch-file exit-code

5
推荐指数
1
解决办法
791
查看次数

如何在Windows批处理文件中提取版本号?

我需要从字符串中提取Major,Minor和Revision数字并实现这一点我试图使用'.'在批处理文件中拆分字符串.字符作为分隔符.

例如:如果用户在命令提示符下输入1.0.2,我应该能够提取

  • 1 - 主要版本,
  • 0 - 次要版本和
  • 2 - 修订

我正在尝试使用FOR命令来实现这一点,但只是没有通过.任何人都可以帮助我解决部分

@ECHO OFF & SETLOCAL 
set /p "ReleaseVersion=Please specify the software release version : "

:nextVar
for /F "tokens=1* delims=." %%a in ("%ReleaseVersion%") do (
   set %%a
   set ReleaseVersion=%%b
)
if defined ReleaseVersion goto nextVar

@PAUSE
Run Code Online (Sandbox Code Playgroud)

windows command-line cmd batch-file

1
推荐指数
2
解决办法
3177
查看次数

标签 统计

batch-file ×3

command-line ×2

windows ×2

cmd ×1

exit-code ×1

python ×1