相关疑难解决方法(0)

Windows Bat文件可选参数解析

我需要我的bat文件接受多个可选的命名参数.

mycmd.bat man1 man2 -username alice -otheroption
Run Code Online (Sandbox Code Playgroud)

例如,我的命令有2个必需参数,以及两个参数值为alice的可选参数(-username)和-otheroption:

我希望能够将这些值插入变量中.

只是给那些已经解决了这个问题的人打电话.男人这些蝙蝠文件很痛苦.

batch-file

74
推荐指数
4
解决办法
9万
查看次数

如何接收最奇怪的命令行参数?

正如在另一个线程中所讨论的如何避免cmd.exe解释shell特殊字符,如<> ^ 从命令行获取所有参数并不容易.

一个简单的

set var=%1
set "var=%~1"
Run Code Online (Sandbox Code Playgroud)

如果你有这样的要求,还不够

myBatch.bat abc"&"^&def
Run Code Online (Sandbox Code Playgroud)

我有一个解决方案,但它需要一个临时文件,它也不是防弹.

@echo off
setlocal DisableDelayedExpansion
set "prompt=X"
(
    @echo on
    for %%a in (4) do (
        rem #%1#
    ) 
) > XY.txt
@echo off
for /F "delims=" %%a in (xy.txt) DO (
  set "param=%%a"
)
setlocal EnableDelayedExpansion
set param=!param:~7,-4!
echo param='!param!'
Run Code Online (Sandbox Code Playgroud)

它失败了像myBatch.bat%a,它显示4而不是%a

在这种情况下,简单的回声%1将起作用.
这显然是for循环,但我不知道如何改变它.
也许存在另一个简单的解决方案

我不需要这个来解决实际问题,但我喜欢在每种情况下都是防弹的解决方案,而不仅仅是在大多数情况下.

escaping batch-file

15
推荐指数
1
解决办法
3598
查看次数

Windows Batch Scripting:收集文件中字符串的唯一出现

我有一个文件,其中逗号之前的第一个字符串是某种标识符.这是一个示例:

A, bla, bla...  
B, bla, bla...  
A, bla, bla...  
C, bla, bla...
Run Code Online (Sandbox Code Playgroud)

我需要解析一个文件来收集这个字符串的所有独特的出现.所以,理想情况下,在处理后我会有某种数组[A, B, C].问题是批处理脚本不支持正式数组.我知道有一些解决方法,但我检查的那些看起来很难看.

到目前为止,我有这样的事情:

FOR /F "tokens=1 delims=, " %%i in (%FILE%) do (
    echo %%i
)
Run Code Online (Sandbox Code Playgroud)

这会产生输出:

A
B
A
C
Run Code Online (Sandbox Code Playgroud)

如何消除字符串的重复出现?实现这一目标的优雅方式是什么?

请分享您的想法,如何解决这个问题.

windows batch-file

3
推荐指数
1
解决办法
4526
查看次数

标签 统计

batch-file ×3

escaping ×1

windows ×1