编辑:我已经根据 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/