Войти

Показать полную графическую версию : [решено] Нужна помощ в переписании команд из cmd в command.com, или на чтонибудь еще


TruLander
18-04-2009, 15:33
нужна помощ в переписании скрипта
@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
нужно чтоб этот код был переписан для работы в 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
на 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
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
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
в том то и дело что не одна строчка, а 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

в смысле будет отображатся надпись
bla bla, reinstall the program? »нет, в смысле будет работать не только на русской
"Введите">>%windir%\TEMP.BAT что оно обозначает? »"Введите" - первое слово приглашения команды "TIME" ;)

TruLander
20-04-2009, 17:32
:yahoo: я счастлив, Спасиб все теперь читает 2 строчку)).




© OSzone.net 2001-2012