Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件,根据自动生成的文件夹名称将文件复制到自动生成的文件夹_Batch File_If Statement_Xcopy - Fatal编程技术网

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

Batch file 批处理文件,根据自动生成的文件夹名称将文件复制到自动生成的文件夹,batch-file,if-statement,xcopy,Batch File,If Statement,Xcopy,我正在将内容发布到自动生成的文件夹中,发布完成后,我希望使用批处理将基于foldersname的文件复制到该文件夹中 自动生成的文件夹始终具有语言名称,例如德语、荷兰语、法语和英语 我希望我的批处理要做的是,当文件夹名为德语时,它会将所有文件从C:\Sourcefolder\DE\复制到运行批处理的新生成的文件夹中。我自己也曾试图找到一些东西,但由于缺乏知识,结果是: CHDIR /D %1 @ECHO OFF SETLOCAL SET "sourcedir=%cd%" IF "%1"==

我正在将内容发布到自动生成的文件夹中,发布完成后,我希望使用批处理将基于foldersname的文件复制到该文件夹中

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

我希望我的批处理要做的是,当文件夹名为德语时,它会将所有文件从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
(具有扩展名但没有驱动器和路径的批处理文件的名称)的详细信息,请打开命令提示符窗口,在那里运行
调用/?
,并阅读此命令的帮助输出

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

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

有关命令
xcopy
上使用的开关的详细信息,请在命令提示窗口中运行
xcopy/?
,然后阅读输出帮助

顺便说一下:批处理文件将JPEG文件复制到当前工作目录的指定语言子文件夹中。当前工作目录可以是存储批处理文件的目录,但也可以是不同的目录,具体取决于批处理文件是如何启动的以及从哪个目录启动的。如果要确保将JPEG文件复制到批处理文件目录的指定语言子文件夹,则需要使用
xcopy
行:

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

哪个字符串作为参数传递给批处理文件,只有德语、英语、希腊语等,或者更长的字符串,例如以语言名称结尾的整个路径?@Mofi只有德语、英语、希腊语等,而不是整个路径。