Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
此脚本的作用是什么(Windows CMD)_Windows_Cmd - Fatal编程技术网

此脚本的作用是什么(Windows CMD)

此脚本的作用是什么(Windows CMD),windows,cmd,Windows,Cmd,首先,我建议打开命令提示符窗口并运行以下命令: 设置/? 如果/? 复制/? 呼叫/?。。。解释%1和%2 对于每个命令,帮助都是从上到下阅读的输出 此小批处理文件首先提示批处理文件用户输入带有提示文本的字符串SPR。如果用户按照此批处理文件的预期输入任何内容,则用户输入的字符串将分配给环境变量A 接下来,进行不区分大小写的字符串比较,以检查用户输入的字符串的第一个字符是d还是d 在这种情况下,最好使用比较运算符==,而不是eq=总是在eq首次尝试比较整数时进行字符串比较,如果由于无法将两个

首先,我建议打开命令提示符窗口并运行以下命令:

  • 设置/?
  • 如果/?
  • 复制/?
  • 呼叫/?
    。。。解释
    %1
    %2
对于每个命令,帮助都是从上到下阅读的输出

此小批处理文件首先提示批处理文件用户输入带有提示文本的字符串
SPR
。如果用户按照此批处理文件的预期输入任何内容,则用户输入的字符串将分配给环境变量
A

接下来,进行不区分大小写的字符串比较,以检查用户输入的字符串的第一个字符是
d
还是
d

在这种情况下,最好使用比较运算符
==
,而不是
eq
=
总是在
eq
首次尝试比较整数时进行字符串比较,如果由于无法将两个比较参数都转换为带符号的32位整数而失败,则会进行字符串比较。第二个参数
d
不是有符号32位整数

批处理文件必须以两个参数启动,这两个参数是两个不带通配符或带通配符的文件名。我假设批处理文件需要两个不带通配符的文件名或带有不带通配符的路径的文件名

如果第一个条件为true,则批处理文件接下来将检查作为第一个参数传递给批处理文件的名称的源文件是否存在,以及作为第二个参数传递给批处理文件的目标文件是否不存在。如果这两个条件为真,则将源文件复制到目标文件

更安全的故障保护措施是:

SET /P A=SPR
IF /I "%A:~,1%" EQU "d" ( 
    IF EXIST %1 ( 
        IF NOT EXIST %2 ( 
            COPY %1 %2 
        )
    )
)
环境变量
Input
现在以
作为字符串预定义。因此,当用户只点击RETURN或ENTER而不输入任何内容时,环境变量
Input
仍被定义为字符串
,如果有效,则下一个命令,但在这种情况下,条件当然是false

只有当第一个输入的字符是
时,由于语法错误,IF条件才会导致批处理执行退出。在所有其他情况下,IF条件现在起作用,并运行不区分大小写的字符串比较

改进的批处理文件接下来会检查批处理文件是否真的像预期的那样以两个参数字符串启动,如果第一个或第二个参数是空字符串(或仅由一个或两个双引号组成的字符串),则会跳转到文件结尾的预定义标签,退出批处理文件

SET "Input=?"
SET /P "Input=SPR: "
IF /I "%Input:~0,1%" == "d" (
    IF "%~1" == "" GOTO :EOF
    IF "%~2" == "" GOTO :EOF
    IF EXIST "%~1" IF NOT EXIST "%~2" COPY "%~1" "%~2"
)