batch-file - 在CMD中使用if条件

标签 batch-file if-statement cmd conditional-statements

编辑:我已经根据 npocmaka 和 magoo 的建议解决了我的问题。现在我明白是缩进导致了这个问题,你们能否建议我将来如何使我的代码更清晰?

这是我的 bat 文件:

    @echo off
    setlocal enabledelayedexpansion

    rem set lang pre-requisites
    rem Purpose can be 'test' or 'deploy'
    SET purpose="test"
    SET lang="English-India"
    SET lang_code="EnIn"

    rem if purpose is test then the folder will be EnInP101M2Tsub, if purpose is deploy then EnInP101M2DFull
    if "%purpose%"=="test"( SET folder=="%lang_code%P101M2Tsub" )
    else if "%purpose%"=="deploy"( SET folder=="%lang_code%P101M2DFull" )

    rem set required paths here
    SET audio="C:\Users\Administrator\..path..\%lang%\%purpose%\BGM\M2\%folder%\*.wav"
    SET source="C:\Users\Administrator\Downloads\Matt_Trial\..path..\%lang%\%purpose%\BGM\M2"
    SET target="C:\Users\Administrator\Downloads\Matt_Trial\..path..\%lang%\%purpose%\BGM\M3\*"

    rem copying the data
    xcopy  %source% %target% /e /i /h
    rem copying audio files into the other folders
    for /d %%a in (%target%) do copy %audio% "%%a"

    rem renaming M3 folders
    cd %target%
    for /d %%a in (*) do (
      set "p=%%a"
      set "fp=!p:~0,8!" & set "tp=!p:~10!"
      ren %%a !fp!M3!tp!
    )

** 为了您的理解 ** 我的父文件夹中有 2 个文件夹(M1、M2、M3)。 第 1 步:我正在将 M2 中的内容复制到新文件夹 M3 中。 第2步:我需要将M2下有我的音频的文件夹的内容复制到M3中的所有文件夹中。 第 3 步:我重命名 M3 下的文件夹。

我希望我说清楚了。 我必须根据设置的变量找出音频路径。我需要 if 条件部分的帮助。截至目前,我不断收到系统找不到指定的文件。请帮忙!!

最佳答案

一些错误。

SET 将在 = 之后包含 " 除非您使用的是用于确保尾随的 `SET "var=data"行中的空格不包括在分配的数据中。

= 之后的任何字符都将被包含(有些字符如果对批处理有特殊意义,则需要进行“转义”,因此 set var==data 将包含分配的数据中的第二个 =

您没有陷入变量中有空格的陷阱 - 语法 set var =data 将设置一个名为 varspace 的变量,而不是 var。

IF 语句的第二个操作数和 ((如果使用)

之间必须有一个空格(我相信严格来说是分隔符)

同样,ELSE 子句必须是 )SpaceelseSpace( - 都在同一行。这个字符序列不能被打断。

在您的 IF 中,您正在使用 "%purpose%" 因为 purpose 我们设置为 "test" 然后这将被评估为 ""test"",这可能会造成混淆,因此不要在分配的数据中包含 " 除非你有一个非常好的原因。

关于batch-file - 在CMD中使用if条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496604/

相关文章:

batch-file - cmd.exe 相当于/dev/stdout,写入标准输出 'as a file'

batch-file - 如何在不等待批处理执行结果和状态的情况下在Jenkins中触发批处理文件

jquery - SimpleCart JS 根据数量改变购物车的颜色

javascript - 在简单函数或条件中组合 4 个 bool 值

java - Intellij IDEA中的终端没有JAVA_HOME和java命令

python - 如何在 Windows 7 上获取结构执行 (fab.exe) 的输出?

windows - 如何确定批处理文件是通过双击还是通过命令行打开的

batch-file - 复制带有特殊字符 ® 的目录

java - 如何重构代码以删除 if 语句?

Java -Jar "my project"未在 C.P 中执行(Windows)