F7-History im INI schützen

German support forum

Moderators: white, Hacker, Stefan2

User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Peter wrote:Guten Abend Holger

ich muss schon wieder betteln gehen...
Kein Problem. ;)

CreateFolders2.vbs:

Code: Select all

''TotalCommander Button um Verzeichnisse anzulegen 
'Kommando  : <Pfad>\CreateFolders2.vbs 
'Parameter : Template.dir "%P"
'StartPfad : <Pfad>\ 
'Icondatei : WScript.exe
'Tooltip   : Erzeuge Template Verzeichnisse
'Die Vorlagendatei "Template.dir" muss im Verzeichnis "<Pfad>" liegen
' das Platzhalter Zeichen "*" wird durch die abgefragte Zeichenkette ersetzt
' 
const sPlaceHolder = "*"
Const FOR_READING = 1
Set oArgs = WScript.Arguments
Dim oFSO
If WScript.arguments.Count > 1 Then

	sDirList = oArgs.Item(0)
	sDestPath = oArgs.Item(1)
	sPrefix = InputBox ("Bitte die Zeichenkette angeben, die das Platzhalterzeichen<*> ersetzen soll"_
					   ,"CreateFolders.vbs"_
					   ,"xxxxxx"_
					   ) 
	If sPrefix = vbNullString  Then WScript.Quit (1)
	Set oFSO = CreateObject("Scripting.FileSystemObject")

	If  oFSO.FileExists(sDirlist) Then

		Set oTextStream = oFSO.OpenTextFile(sDirList,FOR_READING)

		Do Until oTextStream.AtEndOfStream

			sLine = oTextStream.ReadLine
			sLine = Replace(sline,sPlaceholder,sPrefix)
			if Not CreateFolders(sDestpath & "" & sLine) then exit do
			
		Loop

		oTextStream.Close

	Else

		WScript.Echo "Input file " & sDirlist & " nicht gefunden."

	End If

else

	WScript.Echo  "Fehlende Parameter"

End If

Function CreateFolders(sPath)

	CreateFolders = True
	sParentPath = oFSO.GetParentFolderName(sPath)

	If Not oFSO.FolderExists(sParentPath) Then

		CreateFolders = CreateFolders(sParentPath)

	end if

	If CreateFolders Then

		On Error Resume Next
		oFSO.CreateFolder(sPath)

		If Not Err.Number = 0 And Not Err.Number = 58 Then

			WScript.Echo "Fehler: " & Err.Number &" "& Err.Description & VbCrLf & VbCrLf &_
						"Der Pfad" & VbCrLf & VbCrLf &_
						sPath & VbCrLf & VbCrLf &_
						"konnte nicht angelegt werden."
			CreateFolders = False

		End If

	End If

End Function
Ich habe mir die Freiheit genommen, das Platzhalterzeichen & durch * zu ersetzten, da & ein gültiges Zeichen in Pfadnamen ist.
Übergabeparameter usw. sind die Gleichen geblieben.

Gruß
Holger

Edit: ausführlichere Fehlermeldung und Problem bei bereits existierenden Pfad behoben
Last edited by HolgerK on 2010-07-01, 21:45 UTC, edited 1 time in total.
User avatar
Peter
Power Member
Power Member
Posts: 2064
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Wunderbar, klappt bestens. Vielen Dank. :idea: :idea:

Kann man im Script noch abschliessend ein "Refresh" des Panels einbauen? Die Schnelligkeit des Scripts überholt die Panelanzeige ...

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Sollte doch eigentlich mit der Refreshfunktion des TC funktionieren?

Falls da trotzdem Probleme existieren:

Hinter

Code: Select all

		oTextStream.Close
die beiden folgenden Zeilen einfügen:

Code: Select all

		Set WshShell = WScript.CreateObject( "WScript.Shell" ) 
		WshShell.SendKeys "^r"
Natürlich darfst du dann <Ctrl+R> nicht auf ein anderes Kommando umgelegt haben.

Gruß
Holger

Edit: Ich habe den Script noch mal angepasst; da war noch ein kleineres Problem wenn Verzeichnisse bereits existierten.
User avatar
Peter
Power Member
Power Member
Posts: 2064
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

HolgerK wrote:Sollte doch eigentlich mit der Refreshfunktion des TC funktionieren?...
Ja, natürlich klappt das. Hier geht es aber um eine reine Komfortfunktion.

Nochmals herzlichen Dank, Holger.

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
Peter
Power Member
Power Member
Posts: 2064
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Neuer Rechner - neues Problem....

Ich habe eigentlich..

- alles vom alten auf den neuen PC übertragen
- WSCRIPT in der Registry auf "Enabled" gesetzt
- VBS mit Wscript verknüpft
- diverse andere Scripts gestartet
- BAR-Daten von alt auf neu kopiert
- test.vbs mit dem folgende Inhalt erfolgreich doppelgeklickt

Code: Select all

' WSH-Test-Skript (VBS)
WScript.Echo "Dies ist der " & WScript.Name & _
" Version " & WScript.Version
Ergebnis: Version 5.7

Und nach gestrigen Startproblemen ("unbekanntes dies und das" aus dem System) bin ich nach den obigen Anpassungen weiter - ich lande schon bei "Fehlende Parameter" aus dem VBS.

Was zum Kuckuck noch mal hängt denn diesmal?

Grüsse

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

- VBS mit Wscript verknüpft
Schau mal in der Registry unter
[HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command]
(oder [HKEY_CLASSES_ROOT\.VBS\Shell\Open\Command])
nach.
Dort sollte ein sich (default) REGEXPAND_SZ Schlüssel mit folgendem inhalt:

Code: Select all

"%SystemRoot%\System32\WScript.exe" "%1" %*
befinden.
Ich vermute der Teil %* (alle weiteren Parameter ebenfalls übergeben) fehlt bei dir.

Gruß
Holger
User avatar
Peter
Power Member
Power Member
Posts: 2064
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

HolgerK wrote:Schau mal in der Registry unter
[HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command]
(oder [HKEY_CLASSES_ROOT\.VBS\Shell\Open\Command])
nach.
Bei mir steht es unter VBSFILE, nicht unter VBS. Unter da steht

Code: Select all

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\VBSFile\Shell\open\command]
@=""%SystemRoot%\\System32\\WScript.exe" "%1" %*"
Vorher ohne Hochkomma am Pfad , nachher mit Hochkomma - beides hilft nicht. Und mein Button sieht so aus (auf altem und neuem PC gleich):

Code: Select all

TOTALCMD#BAR#DATA
%commander_path%\Plugins\Inhalt_WDX\script\verzeichnisse.vbs
"d:\Program Files\totalcmd\Plugins\Inhalt_WDX\script\verzeichnisse.txt" "%P"
D:\Program Files\totalcmd\TOTALCMD.EXE,33
Erzeugt die Verzeichnisstruktur von Anlagen.

0
-1
Peter
TC 10.xx / #266191
Win 10 x64
User avatar
Peter
Power Member
Power Member
Posts: 2064
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

Jetzt habe ich das Kleingedruckte gelesen:
HolgerK wrote:... REGEXPAND_SZ...
dann die REG umgebaut:

Code: Select all

[HKEY_CLASSES_ROOT\VBSFile\Shell\open\command]
@=hex(2):22,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,\
00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,57,00,\
53,00,63,00,72,00,69,00,70,00,74,00,2e,00,65,00,78,00,65,00,22,00,20,00,22,\
00,25,00,31,00,22,00,20,00,25,00,2a,00,00,00
Und noch immer nichts ...

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Was steht unter:

Code: Select all

HKEY_CLASSES_ROOT\.vbs
default REG_SZ VBSFile
?
Plus irgendein Unterschlüssel "PersistentHandler" ..mit magischer Zahlenfolge?
Wenn dort nicht auf VBSFile verwiesen wird, dann hast du die falsche Stelle geändert.
Ansonsten mal nachsehen ob es einen Schlüssel mit

Code: Select all

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs\OpenWithList
gibt.
In dem Fall wurde die vbs-Verknüpfung mittels Kontextmenu "Öffnen mit" angelegt.
Probeweise den Schlüssel von "FileExts\.vbs\" "nach FileExts\.NOvbs\" umbenennen und prüfen ob es dann funktioniert.

BTW:
alles vom alten auf den neuen PC übertragen
Welches Betriebsystem?

Gruß
Holger
User avatar
Peter
Power Member
Power Member
Posts: 2064
Joined: 2003-11-13, 13:40 UTC
Location: Schweiz

Post by *Peter »

HolgerK wrote:Was steht unter:

Code: Select all

HKEY_CLASSES_ROOT\.vbs
default REG_SZ VBSFile
Da steht:

Code: Select all

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\VBS]
@="VB Script Language"
[HKEY_CLASSES_ROOT\VBS\CLSID]
@="{B54F3741-5B07-11cf-A4B0-00AA004A55E8}"
[HKEY_CLASSES_ROOT\VBS\OLEScript]
HolgerK wrote:...Ansonsten mal nachsehen ob es einen Schlüssel mit

Code: Select all

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs\OpenWithList
gibt....

Ja:

Code: Select all

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs]
"Application"="wscript.exe"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs\OpenWithList]
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs\OpenWithProgids]
"VBSFile"=hex(0):
HolgerK wrote:...
Probeweise den Schlüssel von "FileExts\.vbs" "nach FileExts\.NOvbs" umbenennen und prüfen ob es dann funktioniert....
Ja - es funktioniert. Und warum :shock: :shock: :shock:
Jetzt so belassen, vermute ich.
HolgerK wrote:...BTW:
alles vom alten auf den neuen PC übertragen
Welches Betriebsystem?...
Beide XP Prof.

Und die Moral aus der Geschicht' - traue den Verknüpfungen nicht.

Oder - siehe oben - was war das?

Peter
TC 10.xx / #266191
Win 10 x64
User avatar
HolgerK
Power Member
Power Member
Posts: 5406
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

Peter wrote: Ja - es funktioniert. Und warum :shock: :shock: :shock:
Jetzt so belassen, vermute ich.
Ja, lass das mal so.
Falls du noch mal mittels "Öffnen mit" die Assoziation ändern solltest, dann wir der Schlüssel "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs]" neu angelegt.
Und die Moral aus der Geschicht' - traue den Verknüpfungen nicht.

Oder - siehe oben - was war das?
Normalerweise ist das eigentlich einfach:
"[HKEY_CLASSES_ROOT\.vbs]" (Punkt! .VBS) verweist auf den Dateityp:
"[HKEY_CLASSES_ROOT\VBSFile]". Eine per "Öffnen mit" geänderte Zuweisung durch den Anwender wird in:
"[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs]" festgehalten, und sollte eigentlich auch wieder auf den Dateityp (OpenWithProgids) verweisen (und damit auch die zusätzlichen Parameter berücksichtigen).
Warum in deinem Fall anstelle dessen allerdings:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.vbs]
"Application"="wscript.exe"
eingetragen ist, kann ich so nicht nachvollziehen.
Evtl. reicht es auch aus nur den Schlüssel "Application"="wscript.exe" zu entfernen.

Gruß
Holger
Post Reply