PDA

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


Peutrov
07-02-2018, 17:05
Пожалуйста, предложите пример как реализовать

"1"
существует папка с подпапками и файлами:
C:\example\abc\file1.txt
C:\example\abc\xyz\file2.txt
C:\example\abc\xxx\zzz\file3.txt
C:\example\abc\xxx\zzz\file4.txt
(в файлах содержатся данные)

"2"
есть другая папка с одноименными файлами и подпапками, но содержимое файлов уже другое
abc\file1.txt
abc\xyz\file2.txt
abc\xxx\zzz\file3.txt
abc\xxx\zzz\file4.txt


Папка example может иметь любое другое имя.. например C:\ixampal\. В таком случае, как содержимое "2" разместить (копировать с заменой) в "1"
В командный файл можно ведь применить вставку из буфера? (правая кнопка мыши - вставить). Можно ли в таком случае вставлять имя папки? Например
введите имя папки, куда будут скопированы файлы: пишем вручную или вставляем C:\ixampal\
Можно ли придумать какую-то защиту, коррекцию, в случае если пользователь забудет в конце указать символ "\"
https://i.paste.pics/e7b3325eeed574cac0856619dd5d5833.png
ведь если в конце этого символа нет - команда может сработать неадекватно, верно?


спасибо за рассмотрение

alpap
07-02-2018, 17:55
@echo off
set "dy=C:\example"
set "dz=D:\example"

if not exist "%dz%" md "%dz%"
subst z: "%dz%"
subst y: "%dy%"
pushd y:\
for /f "delims=" %%a in ('dir /ad/b/s') do 2>nul md "z:%%~pnxa"
for /f "delims=" %%a in ('dir /a-d/b/s') do >nul copy "%%~nxa" "z:%%~pnxa"
popd
subst y: /d
subst z: /d
exit

megaloman
07-02-2018, 19:45
Насколько я понимаю, в папке 2 эталонные файлы, и путь к ним надо указать верно. Укажите свой путь. С остальным возможны варианты.@Echo Off
cls
Set "Fold1=С:\example"

Pushd "%Fold1%"
If Not %ErrorLevel%==0 (
Echo "%Fold1%"
Pause
Exit /B 240
)
Set "Files=Z:\Fold2\*.*"

Xcopy /S /Y "%Files%"
Popd
@Echo Off
cls
Set "Fold1=%~dp0"




Всё что ниже берём из предыдущего батника@Echo Off
cls
If "%~1"=="" (
Echo Input folder not defined
Pause
Exit /B 240
)
Set "Fold1=%~1"



Всё что ниже берём из первого батника




© OSzone.net 2001-2012