这是我的蝙蝠档案:
@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!
)
**为了您的理解** 我的父文件夹(M1,M2,M3)中有2个文件夹。 步骤1:我将M2中的内容复制到新文件夹M3。 第2步:我需要将具有音频的M2下的文件夹内容复制到M3中的所有文件夹中。 第3步:我重命名M3下的文件夹。
我希望自己清楚明白。 我必须根据设定变量找出音频路径。我需要if条件部分的帮助。截至目前我一直在获取系统找不到指定的文件。请帮忙!!
答案 0 :(得分:3)
一些错误。
SET
将在 = EXCEPT之后包含“,如果您使用`SET”var = data“,它将用于确保行不包括在分配的数据中。
= 之后的任何字符都会被包含在内(如果批量具有特殊含义,则某些字符需要'转义',因此set var==data
将包含第二个 = < / kbd>在分配的数据中。
你没有陷入变量空间陷阱 - 语法set var =data
将设置一个名为var space 的变量而不是var。
IF
语句的第二个操作数与((如果使用)
类似地,ELSE子句必须是) Space else Space ( - 全部在同一行。这个字符序列不能被破坏。
在IF
,您正在使用"%purpose%"
自purpose
我们设置为"test"
后,这将被评估为""test""
,这可能是{{1}}令人困惑,因此除非你有充分的理由,否则你的数据中不包括“。
答案 1 :(得分:1)
此:
@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" )
应该看起来像(因为你只有两个选项..)
@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"
)
if "%purpose%"=="deploy" (
SET "folder=%lang_code%P101M2DFull"
)
echo %folder%
endlocal
您无法使用else
开始一行,并且使用双=
设置无效。并且您的比较不正确,因为您在变量值中有引号。
答案 2 :(得分:1)
我还没有50个代表,所以不得不通过回答发表评论。
当我遇到批处理文件问题时,我发现对REM
行@ECHO OFF
行有帮助。
然后创建批处理文件的快捷方式,并更改“目标”字段以将输出通过管道传输到文本文件。
因此,如果您的批次位于C:\ test \ mybatch.bat,则在C:\ test \
中创建批次的快捷方式接下来,右键单击快捷方式,然后选择“属性”。
在“快捷方式”选项卡下,将以下内容添加到目标字段中文本的末尾。
>>output.txt
运行快捷方式,将所有命令和错误保存到output.txt
文件,您可以在其中查看导致问题的原因,例如未设置变量。