我将内容发布到自动生成的文件夹,发布完成后我想根据文件夹名称使用批处理将文件复制到该文件夹
自动生成的文件夹始终具有语言名称,例如德语,荷兰语,法语和英语。
我希望我的批处理是当文件夹名称是德语时,它将所有文件从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
有没有人可以帮助我朝正确的方向发展?
提前致谢!
答案 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 CopyFiles
和set
连接在一行上,这样就可以在不使用括号的情况下为每个goto
指定2个命令。有关此特殊运算符的详细信息,请参阅Conditional Execution。
有关命令if
上使用的开关的详细信息,请在命令提示符窗口xcopy
中运行,并阅读输出帮助。
顺便说一句:批处理文件将JPEG文件复制到当前工作目录的指定语言子文件夹中。当前工作目录可以是存储批处理文件的目录,但也可以是不同的目录,具体取决于批处理文件的启动方式和目录。如果要确保将JPEG文件复制到批处理文件目录的指定语言子文件夹中,则需要包含xcopy /?
的行:
xcopy