我需要在批处理文件中有一个IF语句,它根据FileName采取不同的操作。这个动作并不重要,因为我处理了那个部分。我无法弄清楚如何让我的IF语句发挥作用。我试图将FileName子串,但无法使其工作。简而言之,如果FileName具有" Orders"那么我想做一件事。如果它有"配件"在名字里。
IF "%1:~0,18%" == MyFileName1_Orders (
sqlcmd MyCommand )
IF "%1:~0,23%" == MyFileName1_Accessories (
sqlcmd MyCommand )
提前致谢
感谢Magoo的回复。我按照你的表现做了,但不幸的是它仍然无法奏效。在这个批处理文件中,我唯一拥有的就是这3行,从以下开始:set" name =%1"。仍然没有运气。
我还试图查看文件"是否包含"我尝试子串的话,但我无法解决我的sqlcmd线问题。我按照这个例子。我可以得到它来回应正确的东西,所以我知道它正在工作,但它似乎并没有触发(sqlcmd ...)部分。如果sqlcmd部分是批处理文件中唯一的部分,它每次都能完美运行。批处理文件:查找子字符串是否在字符串中(不在文件中)
保罗我也尝试了你的建议,我得到了同样的结果;它并没有解雇我的sqlcmd。就像我说的那样,这个sqlcmd已经工作多年了,并且如果它是bat文件中唯一的东西,它将继续工作。一旦我添加IF,它就会停止工作。答案 0 :(得分:0)
元变量不支持子字符串 - 您需要将值传输到普通环境变量。
set "name=%1"
IF "%name:~0,18%" == "MyFileName1_Orders" ( sqlcmd MyCommand )
应该有效,假设这些隔离的代码行包含在子程序中,其中名称作为第一个参数提供。
如果引用if
的一个参数,则两者都必须
答案 1 :(得分:0)
尝试类似:
set fn=%~1
if not "%fn:orders=%" == "%fn%" ( sqlcmd MyCommand )
if not "%fn:accessories=%" == "%fn%" ( sqlcmd MyCommand )
答案 2 :(得分:0)
没关注这个问题 - 我使用的是Powershell,它就像一个冠军。感谢所有的回复。