2014-02-20 9 views
0

Я пытаюсь скопировать некоторые файлы из одного каталога в два других каталога, используя пакет.Копирование файлов из одной папки в другую с помощью пакета

Сначала я создаю 3 каталога и после этого хочу скопировать следующие файлы в backup1 и backup2. Файлы имеют имя 010101.txt - 300101.txt (К backup1) и 010102.txt - 300102.txt (backup2).

mkdir backup1 
mkdir backup2 
mkdir backup3 
copy 1.txt C:\User\Test\Backup1 
copy 2.txt C:\User\Test\Backup2 

Я предполагаю, что я должен использовать подстановочные как-то, но если я пишу ????? 1.txt и ????? 2.txt я получаю сообщение об ошибке Синтекс.

+0

Являются ли эти диапазоны единственными файлами в каталоге? –

+0

Вы показываете 4 файла в '010101.txt - 300101.txt и 010102.txt - 300102.txt', потому что если они являются диапазонами, то они перекрываются. – foxidrive

+0

Есть те 60 файлов .txt и несколько файлов .bat и резервные каталоги там. Это ты имел в виду? – user3333279

ответ

1

Попробуйте это:

@echo off 
setlocal enabledelayedexpansion 

cd /d "C:\Temp\copytest" 
set "b1=C:\Temp\Backup1" 
set "b2=C:\Temp\Backup2" 
for /l %%a in (1,1,300102) do (
    set num=%%a 
    if %%a GTR 10000 if %%a LSS 100000 set num=0%%a 
    if !num:~-1! EQU 1 (
    if exist !num!.txt echo copy !num!.txt %b1% 
) ELSE (
    if !num:~-1! EQU 2 (
     if exist !num!.txt echo copy !num!.txt %b2% 
    ) 
) 
) 

Изменить пути, где это применимо. Удалите эхо-сигналы после проверки правильности вывода для фактической копии.

Edit: простой способ

Copy *1.txt "C:\User\Test\Backup1" 
Copy *2.txt "C:\User\Test\Backup2" 
+0

Эй, Мэтт Спасибо за ваш ответ, но это обширно для того, что я ищу. Это для школьного задания, где мы учимся программировать. Я должен уметь объяснить, что я делаю. Согласно моему учителю, это можно сделать, просто используя команду «copy» и «wildcard». Я просто не могу обмотать голову, как это сделать. Еще раз спасибо за ваше время! – user3333279

+0

Обновлен мой ответ. –

+0

Это решило! Я на самом деле пробовал это раньше, но забыл «Спасибо большое :-) – user3333279

1
@ECHO OFF 
SETLOCAL 
SET "sourcedir=." 
FOR %%b IN (1 2) DO (
FOR /f "delims=" %%a IN (
    'dir /b /a-d "%sourcedir%\*.txt" ^| find /i "%%b.txt" ' 
    ) DO (
    XCOPY "%sourcedir%\%%a" "c:\user\test\backup%%b\" >nul 
) 
) 
GOTO :EOF 

Я предположил, что вы хотите, чтобы все файлы в директории, содержащие 1.txt быть скопированы в ... \ Backup1 и те, которые содержат 2.txt к. .. \ Backup2.

Я использовал свой текущий каталог для тестирования. Вам нужно будет изменить значение, присвоенное «sourcedir», чтобы соответствовать самому себе.

Обратите внимание, что xcopy при необходимости создаст целевой каталог.

+0

Спасибо за помощь! Нашел более простое решение, но спасибо за ваше время. – user3333279

Смежные вопросы