Post by Michael DepkePost by Werner P. SchulzPost by Johannes LichtenbergerKlingt womöglich etwas merkwürdig, aber wie legt man einen
Ordner, der mit einem Punkt beginnt an?
... mit Windows selber nicht möglich
Eben mal unter W2kproSP4 getestet: Der Explorer meint, ich solle doch
bitte einen Dateinamen angeben, wenn ich ein Verzeichnis '.xyz'
anlegen will, und verweigert sich dreisterweise. Mit dem 'Total
Commander', den ich normalerweise benutze, ist das Anlegen des
Ordners aber kein Problem. Es kann also nicht so sein, daß Windows
selbst ein Problem mit Punkt-Verzeichnissen hätte, sondern es ist ein
Explorer-Problem. Vielleicht läßt sich sogar irgendein Registry-Key
setzen, der's auch dem Explorer ermöglicht?
Nein, da ist nichts zu machen. Man kann sich aber auf andere Weise
behelfen:
----8<---- newfolder.reg ----------
REGEDIT4
[HKEY_CLASSES_ROOT\Directory\shell\Neues Verzeichnis...]
[HKEY_CLASSES_ROOT\Directory\shell\Neues Verzeichnis...\command]
@="wscript.exe C:\\WINNT\\system32\\newfolder.vbs \"%1\""
----8<-----------------------------
----8<---- newfolder.vbs ----------
'Create a new folder in current folder
'
dim fso
dim sNewFolder
dim lSuccess
dim lPos, rPos, mPos, x
dim arrSubFolders
dim sPath
On error resume next
set fso = CreateObject("Scripting.FileSystemObject")
sNewFolder = InputBox( "Verzeichnisname : ")
arrSubFolders = Split( sNewFolder, ";")
For x = 0 TO UBound( arrSubFolders)
sPath = wscript.arguments(0) & "\" & arrSubFolders(x)
lPos = InStr( sPath, "{")
rPos = InStr( sPath, "}")
mPos = InStr( sPath, ",")
If (lPos > 0) AND (rPos > 0) Then
lSuccess = BuildNumPath( Left( sPath, lPos-1), Mid( sPath, lPos+1, _
mPos-lPos-1), Mid( sPath, mPos+1, rPos-mPos-1))
Else
lSuccess = BuildPath( fso, sPath)
End If
Next
'=======================
Function BuildPath( fso, strPath)
On error resume next
BuildPath = False
If fso.FolderExists( strPath) Then
' folder exists -> stop
BuildPath = True
Else
' doesn't exist : build it
BuildPath = BuildPath( fso, fso.GetParentFolderName( strPath))
BuildPath = BuildPath( fso, fso.CreateFolder( strPath))
End If
End Function
'========================
Function BuildNumPath( strPath, nStart, nEnd)
Dim n
For n = Cint( nStart) TO CInt( nEnd) Step 1
fso.CreateFolder( strPath + Cstr( n))
Next
BuildNumPath = True
End Function
----8<-----------------------------
--
Gruß Jörg