Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нужна помощ в переписании команд из cmd в command.com, или на чтонибудь еще (http://forum.oszone.net/showthread.php?t=138064)

TruLander 18-04-2009 15:33 1097549

Нужна помощ в переписании команд из cmd в command.com, или на чтонибудь еще
 
нужна помощ в переписании скрипта
Код:

@Echo Off
 
If Exist c:\windows\dkdir.txt (
  Call :_Parsing c:\windows\dkdir.txt
  GoTo :EOF
)
 
If Exist C:\dkdir.txt (
  Call :_Parsing C:\dkdir.txt & GoTo :EOF
  GoTo :EOF
)
 
Echo "бла-бла переустановите программу))"
Pause
GoTo :EOF
 
:_Parsing
For /F "Tokens=*" %%A In (%1) Do 7za.exe e 12.zip -o"%%A"

нужно чтоб этот код был переписан для работы в win98 и выше до vistax64))
можно сделать независимый exe файл для выполнения опирации прописаной в этом коде
главное в конце должна добавится конечная папка для извлечения архива - скрипт исполняемый архиватором
Код:

7za.exe e 12.zip -oконечный каталог "пример 7za.exe e 12.zip -oc:\123\"

Maza Faka 19-04-2009 12:17 1098074

Цитата:

Цитата TruLander
нужно чтоб этот код был переписан для работы в win98 »

Нет возможности проверить в Win98, в WinXP работает:
Код:

Dim FSO, sFile, sFile1, sFile2, sPath, hFile, WshShell

sFile1 = "c:\windows\dkdir.txt"
sFile2 = "c:\dkdir.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")

If FSO.FileExists(sFile1) Then
  sFile = sFile1
ElseIf FSO.FileExists(sFile2) Then
  sFile = sFile2
Else
  MsgBox "Переустановите программу", 16, "Ошибка"
  WScript.Quit 1
End If

Set hFile = FSO.OpenTextFile(sFile, 1)
sPath = hFile.ReadAll()

'MsgBox sPath

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "7z.exe e 12.zip -o" & sPath, 0, True


amel27 19-04-2009 12:53 1098112

на VBS - вариант!.. :yes: на батниках тоже можно (если в dkdir.txt всего одна строчка):
вариант для локализованных DOS/WINDOWS:
Код:

@Echo Off

If Exist C:\dkdir.txt Set $PATH=C:\dkdir.txt
If Exist C:\WINDOWS\dkdir.txt Set $PATH=C:\WINDOWS\dkdir.txt
If Not "%$PATH%"=="" GoTo _Parsing

Echo "бла-бла переустановите программу))"
Pause
Exit

:_Parsing
Echo.>>%$PATH%
Echo @Echo Off>%windir%\TEMP.BAT
Type %$PATH%|TIME|Find "Введите">>%windir%\TEMP.BAT

 >%windir%\Введите.BAT Echo @Echo Off
>>%windir%\Введите.BAT Echo Set $DIR=%%3
>>%windir%\Введите.BAT Echo If Not "%%$DIR%%"=="" 7za.exe e 12.zip -o%%$DIR%%
Call %windir%\TEMP.BAT

DEL %windir%\Введите.BAT
DEL %windir%\TEMP.BAT

З.Ы. само собой, при желании можно добавить поддержку английской Windows ;)

TruLander 19-04-2009 14:33 1098179

Maza Faka, спасибо за помощ)) по всей видимости это твой скрипт который ты написал мне в другом форуме, а в этом
скрипте
Код:

Dim FSO, sFile, sFile1, sFile2, sPath, hFile, WshShell

sFile1 = "c:\windows\dkdir.txt"
sFile2 = "c:\dkdir.txt"

Set FSO = CreateObject("Scripting.FileSystemObject")

If FSO.FileExists(sFile1) Then
  sFile = sFile1
ElseIf FSO.FileExists(sFile2) Then
  sFile = sFile2
Else
  MsgBox "Переустановите программу", 16, "Ошибка"
  WScript.Quit 1
End If

Set hFile = FSO.OpenTextFile(sFile, 1)
sPath = hFile.ReadAll()

'MsgBox sPath

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "7z.exe e 12.zip -o" & sPath, 0, True

на winvistax64 выдает
Dim FSO, sFile, sFile1, sFile2, sPath, hFile, WshShell
dim не является внутренней или внешней командой, исполняемой программой или пакетным файлом
sFile1 = "c:\windows\dkdir.txt"
sFile1 не является внутренней или внешней командой, исполняемой программой или пакетным файлом
про sFile2 тоже самое
Set FSO = CreateObject("Scripting.FileSystemObject")
непредвиденное появление then
а, в win98
wscript.quit 1
имя команды указано неправильно
set hfile = fso.opentextfile(sfile, 1)

spath = hfile.readall()
имя команды указано не правильно

set wshshell = wscript.createobject("wscript.shell")

wshshell.run "7z.exe" e 12.zip -o" & spath, 0, true
имя команды указано неправильно

TruLander 19-04-2009 15:02 1098200

amel27, спасиб твой вариант работает хорошо.
(если в dkdir.txt всего одна строчка): - в том то и дело что не одна строчка, а 2строчки пример: 1строка [c:\123\], 2строка c:\123, и батник считывает 1 строчку с кавычками и не может из-за этого создать директорию, если для теста убрать 1 строку то все проходит нормально и распаковывает.
при желании можно добавить поддержку английской Windows - это в смысле будет отображатся надпись
bla bla, reinstall the program? я не против)), хотелось бы чтоб если так то в отличном от русского языка отображалась надпись английского содержания если это возможно ну или тогда просто сделать все на английском.
Вот у меня вопрос? "Введите">>%windir%\TEMP.BAT что оно обозначает? я так понимаю это в случае если папка temp не будет найдена то задастся вопрос?

проверял все работает и на вистеx64 и в 98)))

amel27 20-04-2009 16:51 1099109

Цитата:

Цитата TruLander
в том то и дело что не одна строчка, а 2строчки пример: 1строка [c:\123\], 2строка c:\123»

тогда попробуйте так (с поддержкой английской Windows):
Код:

@Echo Off

If Exist C:\dkdir.txt Set $PATH=C:\dkdir.txt
If Exist C:\WINDOWS\dkdir.txt Set $PATH=C:\WINDOWS\dkdir.txt
If Not "%$PATH%"=="" GoTo _Parsing

Echo "бла-бла переустановите программу))"
Pause
Exit

:_Parsing
Type %$PATH%|Find /V "["|TIME|Find "\">%SystemDrive%\TEMP.BAT

 >%windir%\Введите.BAT Echo If Not Exist %%3\nul.ext MD %%3
>>%windir%\Введите.BAT Echo 7za.exe e 12.zip -o%%3\

 >%windir%\Enter.BAT  Echo If Not Exist %%4\nul.ext MD %%4
>>%windir%\Enter.BAT  Echo 7za.exe e 12.zip -o%%4\

Call %SystemDrive%\TEMP.BAT

DEL %SystemDrive%\TEMP.BAT
DEL %windir%\Введите.BAT
DEL %windir%\Enter.BAT

Цитата:

Цитата TruLander
в смысле будет отображатся надпись
bla bla, reinstall the program? »

нет, в смысле будет работать не только на русской
Цитата:

Цитата TruLander
"Введите">>%windir%\TEMP.BAT что оно обозначает? »

"Введите" - первое слово приглашения команды "TIME" ;)

TruLander 20-04-2009 17:32 1099153

:yahoo: я счастлив, Спасиб все теперь читает 2 строчку)).


Время: 03:50.

Время: 03:50.
© OSzone.net 2001-