批处理文件根据自动生成的文件夹名称将文件复制到自动生成的文件夹

Batch file to copy files to auto generated folder based on auto generated folder name

我正在将内容发布到自动生成的文件夹,发布完成后我想使用批处理根据文件夹名称将文件复制到该文件夹​​

自动生成的文件夹总是有一个语言名称,例如德语、荷兰语、法语和英语。

我想让我的批处理做的是,当文件夹名称是德语时,它将所有文件从 C:\Sourcefolder\DE\ 复制到新生成的文件夹,我是 运行 批处理来自.我试图自己寻找一些东西,但我缺乏知识导致了这个:

CHDIR /D %1

@ECHO OFF 
SETLOCAL
SET "sourcedir=%cd%"

IF "%1"=="German" goto :German

:German
xcopy /Y "C:\Sourcefolder\DE\*.jpg" "%1"

GOTO :EOF

有没有人可以在正确的方向上帮助我?

提前致谢!

这是一个批处理文件的代码,它可以执行您想要的操作。

@echo off
rem Is this batch file called without any parameter?
if "%~1"=="" (
    echo.
    echo Run %~nx0 with language as first parameter.
    echo.
    echo Example: %~nx0 English
    echo.
    pause
    goto :EOF
)

if /I "%~1"=="German"  set "ShortName=DE" & goto CopyFiles
if /I "%~1"=="English" set "ShortName=EN" & goto CopyFiles

rem This batch file was called with a (language) string not listed above.
echo.
echo Error: "%~1" is not a supported language.
echo.
pause
goto :EOF

:CopyFiles
rem Copy all JPEG files of the specified language from source folder
rem to the specified language folder in current working directory.
xcopy /H /I /K /Q /R /Y "C:\SourceFolder\%ShortName%\*.jpg" "%~1"
set "ShortName="

批处理代码中注释的补充说明:

%~1 在执行批处理文件时被 cmd.exe 替换,如果使用 "English" 而不是仅调用批处理文件,则使用第一个参数的字符串删除双引号English 作为第一个参数。

如果您想了解有关 %~1%~nx0(带扩展名但不带驱动器和路径的批处理文件的名称)的更多信息,请打开命令提示符 window、运行 那里 call /? 并阅读此命令的帮助输出。

/I 命令选项 if 使字符串比较不区分大小写。

set "ShortName=DE" & goto CopyFiles 中的 & 符号将两个命令 setgoto 连接在一行中,这使得在这里可以为每个 if 指定 2 个命令而无需使用括弧。有关此特殊运算符的详细信息,请参阅 Conditional Execution

有关命令提示符 xcopy 运行 中使用的开关的详细信息 window xcopy /? 并阅读输出帮助。

顺便说一句:批处理文件将 JPEG 文件复制到 当前工作目录 的指定语言子文件夹中。当前工作目录可以是存储批处理文件的目录,但也可以是不同的目录,具体取决于批处理文件的启动方式和目录。如果要确保将 JPEG 文件复制到 批处理文件目录 的指定语言子文件夹中,则需要包含 xcopy:

的行
xcopy /H /I /K /Q /R /Y "C:\SourceFolder\%ShortName%\*.jpg" "%~dp0%~1"