【问题标题】:Shortcut Commandfile Commandline-Parameter Win7 more than one valueShortcut Command File Command Line-Parameter Win7多值
【发布时间】:2014-08-12 14:37:15
【问题描述】:

我知道如何通过修改 target-shortcut 属性来为 cmd 文件的快捷方式设置命令行参数。

"C:\test\cT.cmd" -logpk cur -lp c:\xxx\testlogs

但是如何将多个参数值提供给一个参数点

C:\test\cT.cmd -logpk cur -lp c:\xxx\testlogs -s 22.07.2014 14:30:00

上面的东西作为 cmd 命令工作,但是如果我将它添加到快捷方式目标,则“-s”选项不会被 cmd 正确填充。

"C:\test\cT.cmd" -logpk cur -lp c:\xxx\testlogs -s 22.07.2014 14:30:00

也许您知道如何拆分“更多节点参数”,以便它们也可以用作快捷方式。

最好的问候

编辑:

if "%argument%" == "-s" ( 
    set startDay=%argumentValueOne%
    set startTime=%argumentValueTwo%
    if "%argumentValueOne%" == "a" set startDay=""
    if "%argumentValueTwo%" == "A" set startTime=""
    set startDate=-s %startDay% %startTime% 
    echo startDate %startDate%
    shift 
    shift
    shift
    goto validate
)

EDIT2:

C:\test\>
if "-s" == "-s" (
set startDay=22.07.2014
 set startTime=14:30:00
 if "22.07.2014" == "a" set startDay=""
 if "14:30:00" == "A" set startTime=""
 set startDate=-s
 echo startDate
 shift
 shift
 shift
 goto validate
)

-s    -logpk cur -vendor -lp c:\xxx\testlogs

如果从 cmd 快捷方式调用

EDIT3:

C:\test\>
if "-s" == "-s" (
set startDay=22.07.2014
 set startTime=14:30:00
 if "22.07.2014" == "a" set startDay=""
 if "14:30:00" == "A" set startTime=""
 set startDate=-s 22.07.2014 14:30:00
 echo startDate -s 22.07.2014 14:30:00
 shift
 shift
 shift
 goto validate
)

-s 22.07.2014 14:30:00 -logpk cur -vendor -lp c:\xxx\testlogs

如果从打开的 cmd 调用

【问题讨论】:

  • 没有正确填充 cmd 是什么意思?另外,拆分更多节点参数是什么意思?
  • cmd 脚本无法将其识别为有效参数。我想知道是否有一种方法可以使用像 ",/,... 这样的分隔符来拆分 22.07.2014 14:30:00 以实现正确的功能和识别参数
  • 这应该是正确的吗? C:\test\cT.cmd -logpk cur -lp c:\xxx\testlogs -s 22.07.2014 14:30:00。放在快捷方式上时它不起作用。对吗?
  • 是的,正常的命令,之前通过打开一个cmd来执行,就像charm一样工作
  • 你能在快捷方式中试试"C:\windows\system32\cmd.exe" /c C:\test\cT.cmd -logpk cur -lp c:\xxx\testlogs -s 22.07.2014 14:30:00吗?

标签: windows shell command-line cmd shortcut


【解决方案1】:

您遇到了臭名昭著的早期变量扩展问题。您的变量在块的开头被替换为它们的值。因为那时 startday 和 starttime 是空的,这就是你得到的。
我怀疑在您从命令行进行的测试中,变量已经从第一次尝试中设置(它们保留在环境中,您可以使用set 看到它)。
解决方法是将setlocal enabledelayedexpansion 放在批处理文件的开头,然后使用!startday! 而不是%startday% 引用您的变量。

【讨论】:

  • 天才 :) 我想知道为什么有时我必须启动它两次
猜你喜欢
  • 2022-12-04
  • 2014-12-25
  • 2017-01-29
  • 2022-12-27
  • 2022-12-26
  • 2011-04-16
  • 2018-04-18
  • 2022-11-01
  • 2022-12-01
相关资源
最近更新 更多