【问题标题】:Copying multiple files with batch批量复制多个文件
【发布时间】:2015-02-07 20:50:59
【问题描述】:

我正在编写一个批处理程序来控制我的电影存档(个人使用)。这就是我试图复制文件夹的方法。

:_Kopya
set "TRGT=%~1" & set "KPY-GLN[1]=%~2" & set "KPY-GLN[2]=%~3" & set "KPY-GLN[3]=%~4"

REM Checking user input and defining variables.
for /l %%s in (1,1,3) do (
  if DEFINED KPY-GLN[%%s] (
    for /f "tokens=1-2 delims=:" %%a in ("!KPY-GLN[%%s]!") do (
      call :_Kontrol "%%a" "%%b" "" "" "aaaaa[%%s]" "bbbbb[%%s]" "" ""
      if "!TEST!"=="0" goto :EOF
    )
  )
)

REM Copying folders.
for /l %%s in (1,1,3) do (
  if NOT DEFINED bbbbb[%%s] set bbbbb[%%s]=!aaaaa[%%s]!
  for /l %%a in (!aaaaa[%%s]!,1,!bbbbb[%%s]!) do (
    call :_ReadLine "%MURL%" "%%a" "LINE"
    if EXIST "!TRGT!\!LINE:~20!" rd /s /q !TRGT!\!LINE:~20!
    robocopy /s /e "!LINE!" "!TRGT!\!LINE:~20!" >NUL 2>&1
  )
)
goto :EOF

我就是这样称呼的,

call :_Kopya "C:\" "123:125" "124:130" "125"

这意味着将文件号从123复制到125,从124复制到130125

它工作正常,但我想解决一个问题。当我调用此函数时,我显示其复制文件号124 2 次和文件号125 3 次。我该如何解决这个问题?

PS1: %MURL% 它是一个文本文件,包含这些文件的本地地址。类似于M:\Movies\000y.001y\The.Lord.of.the.Rings.The.Return.of.the.King.(2003){0167260}[00087]

PS2: :_ReadLine 它是一个读取特定行并将该行的值添加到LINE 变量的函数。

【问题讨论】:

    标签: batch-file cmd copy


    【解决方案1】:
    @ECHO Off
    SETLOCAL
    :: remove variables starting $
    FOR  /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a="
    
    :: Parameters are adirectory range*
    :: where range may be a single number or start:finish
    
    SET "directory=%~1"
    
    :loop
    SHIFT
    IF "%~1"=="" GOTO :eof
    FOR /f "tokens=1,2delims=:" %%a IN ("%~1") DO (
     IF "%%b"=="" (CALL :kopythis %%a) ELSE (FOR /L %%c IN (%%a,1,%%b) DO CALL :kopythis %%c)
    )
    GOTO loop
    
    GOTO :EOF
    
    :kopythis
    IF DEFINED $%1 GOTO :EOF
    SET $%1=Y
    ECHO(COPY whatever with parameters %directory% and %1
    GOTO :eof
    

    这应该可以满足您的需求。我将留给您详细了解如何根据提供的参数构建所需的任何复制机制。

    请注意,使用这种方法,引用参数是可选的,如果第一个不包含分隔符,则第一个明显例外。它还允许任意数量的范围参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多