相关疑难解决方法(0)

Windows命令解释器(CMD.EXE)如何解析脚本?

我遇到了ss64.com,它为如何编写Windows命令解释器将运行的批处理脚本提供了很好的帮助.

但是,我一直无法找到批处理脚本的语法,扩展或不扩展的方法,以及如何逃避事情的良好解释.

以下是我无法解决的示例问题:

  • 如何管理报价系统?我制作了一个TinyPerl脚本
    (foreach $i (@ARGV) { print '*' . $i ; }),编译它并以这种方式调用它:
    • my_script.exe "a ""b"" c"?输出是 *a "b*c
    • my_script.exe """a b c"""?输出它*"a*b*c"
  • 内部echo命令如何工作?在那个命令中扩展了什么?
  • 为什么我必须for [...] %%I在文件脚本中使用,但for [...] %I在交互式会话中?
  • 什么是转义字符,以及在什么情况下?如何逃脱百分号?例如,我怎么能%PROCESSOR_ARCHITECTURE%字面回声?我发现echo.exe %""PROCESSOR_ARCHITECTURE%有效,有没有更好的解决方案?
  • 如何%配对?例:
    • set b=a,echo %a %b% c%%a a c%
    • set a =b,echo %a %b% c%bb c%
  • 如果此变量包含双引号,如何确保变量作为单个参数传递给命令?
  • 使用 …

windows parsing cmd batch-file variable-expansion

132
推荐指数
5
解决办法
6万
查看次数

让XCopy复制文件,如果存在则不覆盖前一个文件(不提示)

我正在向远程计算机发送命令以使其复制文件.我想要复制文件,但不要用相同的名称覆盖以前的文件(如果存在).我还需要在没有任何提示的情况下运行命令(xcopy喜欢提示我指定的目标名称是文件还是目录,并且它还会提示有关覆盖文件).

xcopy

21
推荐指数
5
解决办法
6万
查看次数

两个几乎相同的批处理脚本之一中的语法错误:“)”无法在此处进行语法处理

我正在尝试为自动 Unity 构建设置 Jenkins 服务器。

因此,我编写了两个(在我看来)基本相同的批处理脚本。

这两个脚本都由 Jenkins 通过一个Execute Windows batch command步骤作为构建步骤运行

命令: E:\unityImport.bat

然后Execute Windows batch command第二步使用

命令: E:\unityBuild.bat

它们都有相同的开头,因为我需要收集一些文件路径,特别是项目的统一版本。所以在这两个脚本中,我使用完全相同的解析和字符串拆分项目版本的方式。它们之间唯一不同的是,第一个启动 Unity 并将专用的unitypackage(保存在下一步中执行的方法)导入项目,而第二个再次启动 Unity 以执行实际构建(不幸的是它没有不能一次性工作...... Unity 似乎尝试在unitypackage导入之前执行该方法)。

然而,第二个脚本总是失败并出现语法错误

")" 不能在这里进行语法处理。


我试图实现的是

  1. 读出文件的内容 %WORKSPACE%\ProjectSettings\ProjectVersion.txt

    SET /p TEST=<%WORKSPACE%\ProjectSettings\ProjectVersion.txt
    
    Run Code Online (Sandbox Code Playgroud)

    的内容%TEST%通常看起来像例如

    m_EditorVersion: 2019.3.4f1
    
    Run Code Online (Sandbox Code Playgroud)

    ECHO. ProjectVersion.txt = %TEST%看起来像

    ProjectVersion.txt = m_EditorVersion: 2019.3.4f1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 字符串拆分以便只取包含版本号的最后一部分

    for %%x in (%TEST::= %) do (
        SET "VALUE=%%x"
        SET "UNITY_VERSION=!VALUE:~0,-2!" 
    )
    
    Run Code Online (Sandbox Code Playgroud)

    所以%UNITY_VERSION%通常包含例如2019.3.4. 我不会拆分更多,因为也有两位数的 Unity 版本,例如 …

batch-file unity-game-engine jenkins

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

具有常量的变量的批处理文件比较失败

我想编写一段简单的代码来获取一些格式良好的“时间戳”。把时间花在我的两个变量上,Start并且End工作正常。我也可以将其打印为0:0:0。我想要一个小于零的前导零,但是很显然我得到一个错误,说“未找到或错误键入参数10”。我发现这似乎是要比较的变量,但未能解决。有任何想法吗?

@ECHO OFF
REM Time Calculation
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Second /Format:table ^| findstr /r "."') DO (
 set Day=%%A
 set Hour=%%B
 set Minute=%%C
 set Second=%%D
)
set /a Start=%Day%*8640000+%Hour%*360000+%Minute%*6000+%Second%*100
@ECHO ON
ping 8.8.8.8 -n 11
@ECHO OFF
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Second /Format:table ^| findstr /r "."') DO (
 set Day=%%A
 set Hour=%%B
 set Minute=%%C
 set Second=%%D
)
set /a End=%Day%*8640000+%Hour%*360000+%Minute%*6000+%Second%*100
set /a …
Run Code Online (Sandbox Code Playgroud)

batch-file

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