Компьютерный форум 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=225565)

ULTIMATUS 18-01-2012 13:11 1838784

Поиск и копирование в батнике
 
Здравствуйте ув. обитатели форума oszone.net, мне нужна небольшая помощь от вас...

Мне нужно сделать так с помощью батника: если файл 2 2.exe находится здесь D:\Programs , то туда же скопировать 1.exe, если же его там нету, то найти на диске D:\ (на всем, не в корн. каталоге) файл 2 2.exe и к нему же скопировать 1.exe и запустить (в этой папке есть файлы, без которых 1.exe не запустится, но которых у меня нету)

Заранее спасибо!

ULTIMATUS 18-01-2012 19:16 1839059

неужели никто не знает как?

Foreigner 18-01-2012 19:44 1839082

Цитата:

Цитата ULTIMATUS
неужели никто не знает как? »

Наверное просто нет времени
Код:

@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 1839109

Спасибо большое!

megaloman 20-01-2012 10:37 1840209

Цитата:

то найти на диске 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



Время: 10:12.

Время: 10:12.
© OSzone.net 2001-