Erstellen von Verzeichnissen aus Dateinamen ohne Ext?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
versalzen
Power Member
Power Member
Posts: 670
Joined: 2003-09-16, 11:52 UTC
Location: kölle, linksrheinisch.

Erstellen von Verzeichnissen aus Dateinamen ohne Ext?

Post by *versalzen »

Hallo,
Ich möchte gerne einen Button haben, der mir aus allen markierten Dateien ohne Erweiterung Verzeichnisse erstellt. (Oder einen Startmenü-Eintrag, das entscheide ich noch...)

Hier hatte ich ein ähnliches Problem mittelns MUT lösen können, aber dieses Mal möchte ich das gerne direkt aus der Buttonbar, quasi, einklickig, lösen (falls möglich).

mit
Kommando: mkdir
und
Parameter: %O
funktioniert es prächtig, allerdings nur für die Datei, auf der der Cursor steht. Bei 150 Dateien, etwas langwierig.

Die in der Hilfe (F1) unter "Dialogbox: Konfigurieren - Buttonbar ändern" beschriebenen Parameter dünken mir nicht ausreichend, soweit ich das überblicke.
Alle Parameter, die eine Liste erstellen, benutzen den kompletten Dateinamen *mitsamt* Erweiterung, das möchte ich aber nicht.

Mein Wunsch ist es, nachdem ich z.B. 2 Dateien
schöner.ext, und
tag.ext
markiert habe, den erstellten Button zu drücken und danach sofort 2 Verzeichnisse erstellt zu bekommen:
schöner, und
tag

Ich hatte mich auch an einer Batch versucht, weil ja mittels "mkdir" sowieso ein DOS Fenster aufspringt, aber dieses FOR, delims=, diverse Prozentzeichen, etc. wollten sich einfach nicht in der passenden Reihenfolge funktionierend zusammenstellen lassen.

Ich meine auch, das ich vor Jahren hier mal ein entsprechendens Posting gesehen habe, aber, Ihr vermutet richtig, es wurde nimmer mehr gesehen...

Ich bin für eine Idee, einen Hinweis sehr dankbar, die/der mich zu meinem Ziel führt.
Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?

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

Post by *HolgerK »

Code: Select all

TOTALCMD#BAR#DATA
%COMSPEC% /C
FOR /F "tokens=*" %%i in (%L) DO  mkdir "%%~ni"
wciconex.dll,29
Create folders from marked names without extension


-1
Wie immer: mit Umlauten klappt es nicht so ohne weiteres.

HTH
Holger
User avatar
versalzen
Power Member
Power Member
Posts: 670
Joined: 2003-09-16, 11:52 UTC
Location: kölle, linksrheinisch.

Post by *versalzen »

Oh, danke. Eine vorgefertigte Lösung. Das ist nett!
HolgerK wrote:Wie immer: mit Umlauten klappt es nicht so ohne weiteres.
2 Fragen (noch):

1)
Das heisst nun, das es mit TC-eigenen Mitteln nicht geht, oder?

2)
Un das Ganze dann umlautfähig zu gestalten, wäre dann eine Batchdatei nötig, die die Umlaute dann wie hier glanzvoll dargestellt "anpasst"?
Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?

Mario
User avatar
Dalai
Power Member
Power Member
Posts: 9988
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

versalzen wrote:Das heisst nun, das es mit TC-eigenen Mitteln nicht geht, oder?
Rischtisch.
Un das Ganze dann umlautfähig zu gestalten, wäre dann eine Batchdatei nötig, die die Umlaute dann wie hier glanzvoll dargestellt "anpasst"?
Jep, so ist es.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Post by *HolgerK »

2)
Un das Ganze dann umlautfähig zu gestalten, wäre dann eine Batchdatei nötig, die die Umlaute dann wie hier glanzvoll dargestellt "anpasst"?
Oder man nimmt diesen VB-Script und lässt vom inneren Kern:

Code: Select all

    sNewFilePathName = sNewPath & "\" & sName & "." & sExtension

      If Not oFSO.FileExists( sNewPath ) Then
      
         If Not oFSO.FolderExists( sNewPath ) Then
            oFSO.CreateFolder( sNewPath )
         End If

         If Not oFSO.FileExists( sNewFilePathName ) Then
            oFSO.MoveFile  sFilePathName, sNewFilePathName
         ElseIf not bSilent then
            WScript.Echo "Destination File exists (skipped)!: " & NewFilePathName
         End If
         
      ElseIf not bSilent then
         WScript.Echo "File with destination folder name exists already (skipped)!: " & sNewPath
      End If
 
nur noch diesen Teil:

Code: Select all

         If Not oFSO.FolderExists( sNewPath ) Then
            oFSO.CreateFolder( sNewPath )
         End If
übrig.
Dann sollte es auch mit Suchergebnissen in unterschiedlichen Verzeichnissen funktionieren.

Gruß
Holger
User avatar
versalzen
Power Member
Power Member
Posts: 670
Joined: 2003-09-16, 11:52 UTC
Location: kölle, linksrheinisch.

Post by *versalzen »

Ich glaube, es funktioniert bislang ohne Probleme.
Hier für das Archiv, falls mein Rechner mal explodiert.

Code: Select all

@echo off
set skip=4
REM --- die reg.exe auf Windows 7 gibt weniger Zeilen aus als die von XP
reg.exe /? | findstr "Version 3.0" > NUL || set skip=2

:GET_CODEPAGE
for /f "skip=%skip% tokens=3" %%i in (
  'reg.exe query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v "ACP"'
) do (
  set active_cp=%%i
)

for /f "skip=%skip% tokens=3" %%i in (
  'reg.exe query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage" /v "OEMCP"'
) do (
  set oem_cp=%%i
)

:DO
REM --- if-Befehl: Würgaround für Windows XP64, wo es in der 32 bit CMD kein chcp mehr gibt
if "[%ProgramFiles(x86)%]" == "[]" chcp %active_cp% > NUL

REM  *** Hier die eigentliche Arbeit des Skripts

REM Erstellen von Verzeichnissen aus Dateinamen ohne Ext? / http://ghisler.ch/board/viewtopic.php?t=32527&highlight=
REM !!!!! WICHTIG! bei Aufruf dieser Batch, DARF KEIN *STARTPFAD* angegeben sein, sonst werden die Verzeichnisse in diesem angelegt.
REM FOR /F "tokens=*" %%i in (%1) do @echo TEST mkdir "%%~ni"
REM echo .
REM echo .
REM echo "JETZT kann noch abgebrochen werden, ansonsten wirds durchgefuehrt."
REM echo .
REM pause
FOR /F "tokens=*" %%i in (%1) DO mkdir "%%~ni" 



REM --- if-Befehl: Würgaround für Windows XP64, wo es in der 32 bit CMD kein chcp mehr gibt
if "[%ProgramFiles(x86)%]" == "[]" chcp %oem_cp% > NUL 
REM echo "Fertig, das wars..."
REM echo .
REM pause
Was nützt der Löffel für die Weisheit, wenn man zu weit vom Suppentopf entfernt sitzt?

Mario
Post Reply