Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Копирование файлов из списка с созданием директории (http://forum.oszone.net/showthread.php?t=348056)

nexxie 20-02-2021 21:50 2950803

Копирование файлов из списка с созданием директории
 
Добрый день!

Нужно скопировать файлы из списка(txt) в отлельную папку(находящуюся в данном каталоге) с сохранением структы папок.

Допустим, bat-файл лежит вот тут С:\3\outfiles, в этой папке есть нужный файл, который лежит в С:\3\outfiles\4\5\6\n.pl Нужно чтобы тот файл оказался в С:\3\outfiles\new\4\5\6\n.pl(т.е. с сохранением полной структуры)
Я дошел до того, что он просто копируюет файлы в корень, где лежит батник, в новую папку, но без сохранении структуры. Пробовал Xcopy но он не принимает, почему-то ключи.

Код:

@echo off
set from=from.txt

echo off&pushd "%~dp0"

for /f %%i in (%from%) do @xcopy  "%%i" "%~dp0"\new


NickM 20-02-2021 22:11 2950805

nexxie, из строки полученной из файла, выделяйте строку пути, после создавайте новый путь и уже туда копируйте файл.

И да, пример from.txt приведите.

nexxie 20-02-2021 22:20 2950808

@
Цитата:

Цитата NickM
nexxie, из строки полученной из файла, выделяйте строку пути, после создавайте новый путь и уже туда копируйте файл.
И да, пример from.txt приведите. »


У xcoppy есть ключи /Y /C /R /S /I /E /T которые позволяют создать стукрутуру папок. А вот пример самого файла

C:\Users\nexxie\outfiles\1\2\3\4.pl
C:\Users\nexxie\outfiles\1\2\3\5.pl
C:\Users\nexxie\outfiles\1\2\3\6.pl
C:\Users\nexxie\outfiles\1\2\3\7.pl
C:\Users\nexxie\outfiles\1\2\8.pl
C:\Users\nexxie\outfiles\1\9.pl

Bat файл в каталоге outfiles

Fors1k 20-02-2021 23:48 2950817

Код:

gc "from.txt"|%{copy $_ (ni -f $_.Replace($pwd.Path,".\new"))}

nexxie 21-02-2021 02:54 2950828

У меня получилось сделать так чтобы было 2 файла ( один со стрым путем файлов с расширением, второй с новым путем файла с расширением) Не могу написать вложенный for для копирования. Подскажите, пожалуйста как это сделать можно
Код:

set tfile=nice1.txt
set dest=2.txt
echo off&pushd "%~dp0"
for /f %%j in (%dest%) do set line=%%j
for /f %%i in (%tfile%) do @xcopy /y "%%i" "%line%"


Fors1k 21-02-2021 03:02 2950829

nexxie, сохраните код выше с расширением .ps1 и запустите из нужной папки.

nexxie 21-02-2021 12:02 2950845

Цитата:

Цитата Fors1k
nexxie, сохраните код выше с расширением .ps1 и запустите из нужной папки. »

Мне не нужно в формате PowerShell, если бы мне нужен был иенно он, то я выбрал бы раздел форума связанным с PS. Мне нужно именно в формате bat

Iska 21-02-2021 13:14 2950855

nexxie, здесь нет отдельного раздела для PowerShell. Видимо, Вы имели в виду категорию.

Fors1k 21-02-2021 14:27 2950860

Цитата:

Цитата nexxie
Мне нужно именно в формате bat »

Так у вас цель - скопировать файлы из списка, или это у вас домашнее задание по изучению cmd? Уточняйте это заранее.

nexxie 22-02-2021 13:26 2950925

Цитата:

Цитата Fors1k
Так у вас цель - скопировать файлы из списка, или это у вас домашнее задание по изучению cmd? Уточняйте это заранее. »

У меня цель написать это в формате bat-файла, для соедения с другим bat файлом. На данном этапе мне необходима помощь имеено в данном вопросе. Формат ps мне не нужен, нужен именно формат bat\cmd

nexxie 22-02-2021 19:43 2950956

Сам нашел решение, может потом кому-то пригодится

Код:

@echo off

set tfile=nice1.txt
set dest=2.txt
set logCopy=logCopy.txt
echo off&pushd "%~dp0"
for /f %%j in (%dest%) do (
    for /f %%i in (%tfile%) do echo f | xcopy /f /y "%%i" "%%j" >> %logCopy%
)



Время: 05:09.

Время: 05:09.
© OSzone.net 2001-