Показать полную графическую версию : Поиск и копирование в батнике
ULTIMATUS
18-01-2012, 13:11
Здравствуйте ув. обитатели форума oszone.net, мне нужна небольшая помощь от вас...
Мне нужно сделать так с помощью батника: если файл 2 2.exe находится здесь D:\Programs , то туда же скопировать 1.exe, если же его там нету, то найти на диске D:\ (на всем, не в корн. каталоге) файл 2 2.exe и к нему же скопировать 1.exe и запустить (в этой папке есть файлы, без которых 1.exe не запустится, но которых у меня нету)
Заранее спасибо!
ULTIMATUS
18-01-2012, 19:16
неужели никто не знает как?
Foreigner
18-01-2012, 19:44
неужели никто не знает как? »
Наверное просто нет времени
@echo off
setlocal
if exist "d:\programs\2 2.exe" (
copy "1.exe" "d:\programs"
start "" "d:\programs\1.exe"
goto:eof
)
for /f "tokens=*" %%i in (' dir /b /s /a "d:\2 2.exe" ') do (
copy "1.exe" "%%~dpi"
start "" "%%~dpi1.exe"
)
ЗЫ. При условии, что "2 2.exe" уникальное название файла, и нет других с таким же именем.
ULTIMATUS
18-01-2012, 20:25
Спасибо большое!
megaloman
20-01-2012, 10:37
то найти на диске D:\ (на всем, не в корн. каталоге) файл 2 2.exe Вот еще вариант, файл 2 2.ехе будет найден в первой попавшейся директории на указанном диске (или в подпапках указанной папке), если в первоначальном месте его не окажется @Echo Off
Set Exe1=D:\Delete\Exe файл1\1.exe
Set Exe2=D:\Delete\Program\2 2.exe
Set Where=D:
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
If Exist "%Exe2%" (
Call :ExeStart "%Exe2%"
) Else (
FOR /F "delims=" %%n IN ("%Exe2%") DO Set NameExe=%%~nxn
FOR /F "usebackq delims=" %%d IN (`Dir "%Where%\" /b /A:D /S`) DO If Exist "%%d\!NameExe!" Call :ExeStart "%%d\!NameExe!"
)
GoTo :Eof
:ExeStart
Set DirExe="%~dp1"
CD /D %DirExe%
Copy "%Exe1%" %DirExe% >Nul
FOR /F "delims=" %%m IN ("%Exe1%") DO Start " " "%%~nxm"
Exit
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.