批处理if语句不在for循环中工作

时间:2017-08-11 15:11:22

标签: batch-file

我很难让if语句在for中工作 环。任何帮助将不胜感激。

        var remoteComputer = new Uri(String.Format("{0}://{1}:5985/wsman", "HTTP", "ComputerName"));
        var connection = new WSManConnectionInfo(remoteComputer, null, TopTest.GetCredential());

        var runspace = RunspaceFactory.CreateRunspace(connection);
        runspace.Open();

        var powershell = PowerShell.Create();
        powershell.Runspace = runspace;

        powershell.AddScript("$env:ComputerName");

        var result = powershell.Invoke();

1 个答案:

答案 0 :(得分:0)

我真的不明白为什么不使用"ProjectLoad_Refresh_%today%*.txt"作为通配符模式而不仅仅使用*.txt,但这段代码应该有效:

@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "Today=2017-08-11"
for %%I in (*.txt) do (
    set "FileName=%%I"
    set "TruncatedName=!FileName:~0,28!"
    if "!TruncatedName!" == "ProjectLoad_Refresh_%Today%" set "FileName=!TruncatedName!"
)
endlocal

有一个例外:文件名包含一个或多个感叹号。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • echo /?
  • endlocal /?
  • for /?
  • if /?
  • set /?
  • setlocal /?