PDA

Показать полную графическую версию : [решено] Копирование файлов из списка с созданием директории


nexxie
20-02-2021, 21:50
Добрый день!

Нужно скопировать файлы из списка(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
nexxie, из строки полученной из файла, выделяйте строку пути, после создавайте новый путь и уже туда копируйте файл.

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

nexxie
20-02-2021, 22:20
@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
gc "from.txt"|%{copy $_ (ni -f $_.Replace($pwd.Path,".\new"))}

nexxie
21-02-2021, 02:54
У меня получилось сделать так чтобы было 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
nexxie, сохраните код выше с расширением .ps1 и запустите из нужной папки.

nexxie
21-02-2021, 12:02
nexxie, сохраните код выше с расширением .ps1 и запустите из нужной папки. »

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

Iska
21-02-2021, 13:14
nexxie, здесь нет отдельного раздела для PowerShell. Видимо, Вы имели в виду категорию.

Fors1k
21-02-2021, 14:27
Мне нужно именно в формате bat »
Так у вас цель - скопировать файлы из списка, или это у вас домашнее задание по изучению cmd? Уточняйте это заранее.

nexxie
22-02-2021, 13:26
Так у вас цель - скопировать файлы из списка, или это у вас домашнее задание по изучению cmd? Уточняйте это заранее. »
У меня цель написать это в формате bat-файла, для соедения с другим bat файлом. На данном этапе мне необходима помощь имеено в данном вопросе. Формат ps мне не нужен, нужен именно формат bat\cmd

nexxie
22-02-2021, 19:43
Сам нашел решение, может потом кому-то пригодится


@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%
)




© OSzone.net 2001-2012