引用 | 編輯
upside
2007-01-09 09:19 |
樓主
▼ |
||
x0
Print #1, "echo @="\"%%1\" %%*">>Fixassoc.reg"這幾行 有 % 字元的命令字串 都會出現語法錯誤的問題 造成無法編輯 請問如何修改 才不會出現錯誤 該% 字元 是必備命令 不可變更或刪除 否則此命令會失效 'rexe.bat 恢復bat.cmd.com.exe.pif.scr.txt.ini文件關聯 Open "c:\Progra~1\KillTr~1\rexe.bat" For Output As #1 Print #1, "@echo off" '讓批次檔不會出現指令訊息 Print #1, "" Print #1, "echo Fixassoc.bat" '用於恢復bat.cmd.com.exe.pif.scr.txt.ini文件關聯 Print #1, "echo." Print #1, "if %os%==Windows_NT goto reg5" Print #1, "echo REGEDIT4 > Fixassoc.reg" Print #1, "GoTo start" Print #1, ":reg5" Print #1, "echo Windows Registry Editor Version 5.00>Fixassoc.reg" Print #1, ":start" Print #1, "echo.>>Fixassoc.reg" Print #1, "echo >>Fixassoc.reg" Print #1, "echo @="\"%%1\" %%*">>Fixassoc.reg" Print #1, "echo.>>Fixassoc.reg" Print #1, "if %os%==Windows_NT goto cmd" Print #1, "GoTo com" Print #1, ": cmd" Print #1, "echo >>Fixassoc.reg" Print #1, "echo @="\"%%1\" %%*">>Fixassoc.reg" Print #1, "echo.>>Fixassoc.reg" Print #1, ": com" Print #1, "echo >>Fixass .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
upside
2007-01-10 18:08 |
1樓
▲ ▼ |
Print #1, "echo @=" \ "chr$(37)chr$(37)1\"; Chr$(0); Chr(37); Chr(37); Chr(42); ">>Fixassoc.reg"
目前改使用 ASCII 碼 來代替字元 不過還是不行 連 空白處都用 ASCII 碼代替了 麻煩各位一下 x0 |
引用 | 編輯
chaiyuchi
2007-01-10 18:26 |
2樓
▲ ▼ |
你試著修改成
Print #1, "echo @=" & Chr$(34) & " " & Chr$(34) & "%%1 " & Chr$(34) & " %%*" & Chr$(34) & ">>Fixassoc.reg" 這樣看看吧 以下把以""為一個條件來取出的話 你將發現有哪些地方出錯了 你的 Print #1, "echo @=" \ "chr$(37)chr$(37)1\" ; Chr$(0); Chr(37); Chr(37); Chr(42); ">>Fixassoc.reg" 而我的 Print #1, "echo @=" & Chr$(34) & " " & Chr$(34) & "%%1 " & Chr$(34) & " %%*" & Chr$(34) & ">>Fixassoc.reg" 你將你的部分 跟我所修改的結果 比較一下 應該不難發現 哪些地方不同吧 (我這樣切割出來,已經很明顯了,在看不懂的話,就可能是你把程式想得太複雜了) PS:以上我是把"的符號,當作是有效字元,因為我看你一直往這裡鑽,所以就把"的符號,變成chr$(34)了,因為不知道你真正的字串為何,所以以上是我預設的假設,如有問題,在跟我說吧。 echo @=" "%%1 " %%*">>Fixassoc.reg <---這是我預設你想輸出的整串字元,如果我有猜錯,也請你把你想輸出的字串,描述清楚,這樣會比較簡單些。 x0 |
引用 | 編輯
upside
2007-01-10 21:12 |
3樓
▲ ▼ |
||||||||||
感謝指教 我參考了語法修改一下就可以成功了
Print #1, "echo @=" & Chr$(34) & "\" & Chr$(34) & "%%1\" & Chr$(34) & " %%*" & Chr$(34) & ">>Fixassoc.reg" 現在只剩下兩行錯誤 Print #1, "echo @=" \ "%%1\" / S; ">>Fixassoc.reg" Print #1, "echo @="NOTEPAD.EXE %%1">>Fixassoc.reg" 修改版 第一行應該OK 第兩行還在研究 Print #1, "echo @=" & Chr$(34) & "\" & Chr$(34) & "%%1\" & Chr$(34) & " /S" & Chr$(34) & ">>Fixassoc.reg" Print #1, "echo @="NOTEPAD.EXE" & Chr$(34) & "\" & Chr$(34) & "%%1\">>Fixassoc.reg" 關於此軟體完成的 成品 應該是要與附件相同的 其作用是 要修復系統登錄 關連的錯誤 因為很多系統問題或病毒造成 .exe 檔無法執行 使用了此軟體即可修復
x0 |
引用 | 編輯
chaiyuchi
2007-01-10 22:11 |
4樓
▲ ▼ |
下面是引用upside於2007-01-10 21:12發表的 : 我想你還是不習慣怎麼去切割出重點吧 只要把一組一組區分開來 真的不會太難的 不過我想不到 居然是為了這套偉大的軟體 在做奮鬥@@ 廢話不多說了 我就來說說重點囉 第一個 Print #1, "echo @=" \ "%%1\" / S; ">>Fixassoc.reg"但你解釋為 Print #1, "echo @=" & Chr$(34) & "\" & Chr$(34) & "%%1\" & Chr$(34) & " /S" & Chr$(34) & ">>Fixassoc.reg"將之切割之後來分析 你在/S;這部分 好像少了這個符號--> ; 我不清楚是否重要 不過還是先依照你原始的模式 來解析好了 Print #1, "echo @=" & Chr$(34) & "\" & Chr$(34) & "%%1\" & Chr$(34) & " /S" & Chr$(34) & ">>Fixassoc.reg" 組合起來之後 所輸出的字元應該為 echo @="\"%%1"/S">>Fixassoc.reg而如果你最原始的那個符號有效的話 那麼應該輸出的為 echo @="\"%%1"/S;">>Fixassoc.reg所以正確應該是 Print #1, "echo @=" & Chr$(34) & "\" & Chr$(34) & "%%1\" & Chr$(34) & " /S;" & Chr$(34) & ">>Fixassoc.reg" 第二題則是 Print #1, "echo @="NOTEPAD.EXE %%1">>Fixassoc.reg"那麼也應該變成 print #1, "echo @=" & chr$(34) & "NOTEPAD.EXE %%1" & chr$(34) & ">>Fixassoc.reg" 把他切割出來的話 就變成 print #1, "echo @=" & chr$(34) & "NOTEPAD.EXE %%1" & chr$(34) & ">>Fixassoc.reg" 所以正確字元為 echo @="NOTEPAD.EXE %%1">>Fixassoc.reg很簡單吧^^" x1 |
引用 | 編輯
upside
2007-01-10 22:23 |
5樓
▲ |
Private Sub Form_Load()
Form2.Show 'reset.bat 修復系統與網路 Open "c:\Progra~1\KillTr~1\reset.bat" For Output As #1 Print #1, "@echo off" '讓批次檔不會出現指令訊息 Print #1, "" Print #1, "regedit /s WinSock2.reg" '修復 WinSock2 Print #1, "regsvr32 /s shdocvw.dll" '修復 IE Print #1, "regsvr32 /s msjava.dll" Print #1, "regsvr32 /s urlmon.dll" Print #1, "regsvr32 /s mshtml.dll" Print #1, "regsvr32 /s browseui.dll" Print #1, "regsvr32 /s jscript.dll" Print #1, "regsvr32 /s vbscript.dll" Print #1, "" Print #1, "regedit /s index.reg" '解決首頁被綁架 Print #1, "" '恢復 hosts & system.ini & win.ini 檔案 Print #1, "attrib -s -h -r C:\WINDOWS\system32\drivers\etc\hosts" Print #1, "attrib -s -h -r C:\Windows\system.ini" Print #1, "attrib -s -h -r C:\Windows\win.ini" Print #1, "copy hosts C:\WINDOWS\system32\drivers\etc" Print #1, "copy system.ini C:\Windows\" Print #1, "copy win.ini C:\Windows\" Print #1, "regedit /s SafeBoot.reg" '修復無法進入安全模式 Print #1, "" '解決執行檔(.exe)無法執行 Print #1, "Call reexe.bat" Print #1, "" '解決該記憶體不能為 read或written Print #1, "for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1" Print #1, "" Print #1, "del c:\Progra~1\KillTr~1\reset.bat" '批次檔自刪 Print #1, "exit" '離開 Close #1 MsgBox "系統進程分析成功!! 請在桌面上觀看日誌" 'dos執行後也消失!工作列上dos會一閃即逝!即成功了! Shell "command.com /c c:\Progra~1\KillTr~1\reset.bat", 6 End '自己結束!後續的工作交給非同步的批次檔完成! Call Shell(App.Path & "\Progra~1\KillTr~1\reset.bat", 1) End Sub x0 |