Войти

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


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