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

时间:2015-03-11 14:34:26

标签: batch-file if-statement xcopy

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

自动生成的文件夹始终具有语言名称,例如德语,荷兰语,法语和英语。

我希望我的批处理是当文件夹名称是德语时,它将所有文件从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

有没有人可以帮助我朝正确的方向发展?

提前致谢!

1 个答案:

答案 0 :(得分:0)

以下是批处理文件的代码,可能会执行您想要的操作。

@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"而不是{{}}调用批处理文件,则删除双引号1}}作为第一个参数。

如果您想了解更多有关English%~1(具有扩展名但没有驱动器和路径的批处理文件的名称),请打开命令提示符窗口,在那里运行%~nx0并阅读帮助输出此命令。

命令call /?

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

if中的&符号将两个命令set "ShortName=DE" & goto CopyFilesset连接在一行上,这样就可以在不使用括号的情况下为每个goto指定2个命令。有关此特殊运算符的详细信息,请参阅Conditional Execution

有关命令if上使用的开关的详细信息,请在命令提示符窗口xcopy中运行,并阅读输出帮助。

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

xcopy