【问题标题】:Batch file to copy files to auto generated folder based on auto generated folder name根据自动生成的文件夹名称将文件复制到自动生成的文件夹的批处理文件
【发布时间】:2015-03-11 14:34:25
【问题描述】:

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

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

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

有没有人可以帮助我朝着正确的方向前进?

提前致谢!

【问题讨论】:

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

标签: batch-file if-statement xcopy


【解决方案1】:

这里是一个批处理文件的代码,它可以做你想做的事情。

@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="

对批处理代码中的 cmets 的一些补充说明:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 2017-06-07
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多