Create files/dir tree from list

English support forum

Moderators: white, Hacker, petermad, Stefan2

Post Reply
krojc
Junior Member
Junior Member
Posts: 71
Joined: 2003-08-20, 08:46 UTC

Create files/dir tree from list

Post by *krojc »

Hello,
Is it possible to create files from list. I have a list.txt with filenames (or file tree) and would like to recreate the structure.

I tried bat plugin, but can not make it work.
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

VBScript: Create folder file from list, Erstelle aus Liste

Post by *Stefan2 »

How to differ between files and folders?



Usually in my lists, the folder have a trailing back slash,
as TC does already for creating his lists with %F, %L and such.

Examples:
X:\Test\Folder\
X:\Test\Folder\file.txt
X:\Test\Folder.No2\I am another file.txt
X:\Test\Folder.No3\
X:\Test\Folder.No3\I am a Sub folder\
X:\Test\Folder.No3\I am a file without extension



For that, we can use e.g. a VBScript like this:

Create folders or files from a text file
Erzeuge Verzeichnisse oder Dateien aus einer Textliste

TC Command
Command : D:\rive\path\to\CreateFromList.vbs
Parameter: %P%N "%T"

Code: Select all

'http://ghisler.ch/board/viewtopic.php?p=294280#294280 , '2015-03-24 Stefan, v0.001

'// TC button:
'Command  : D:\rive\path\to\CreateFromList.vbs
'Parameter: %P%N "%T"
'or
'Parameter: %P%N "%P"
'Icon     : C:\Windows\System32\WScript.exe
'Tooltip  : Create folders or files from a text file


'// VBS code:
Set FSO = CreateObject("Scripting.FileSystemObject")
'Get Parameter %P%N 
sFileList = Wscript.arguments.Item(0)
'Get Parameter "%T"
sTargetPath = Wscript.arguments.Item(1)

If  FSO.FileExists(sFileList) Then
	Const FOR_READING = 1
	bRemoveQuery = True
	bPromptUser = True
    Set oTextStream = FSO.OpenTextFile(sFileList,FOR_READING)
    Do Until oTextStream.AtEndOfStream
			
			sCurrentLine = oTextStream.ReadLine
			
			'//You may want to modify the read lines first a bit?:
			'OLD: If(bRemoveQuery) Then sRemoveThis = InputBox("Remove this part from each line (e.g. 'X:\'):") : bRemoveQuery = False
			'NEW: 
			If(bRemoveQuery) Then sRemoveThis = InputBox("Remove this part from each line (e.g. 'X:\'):" _
			              & vbCRLF & vbCRLF & "Your first line is:" & vbCRLF & sCurrentLine) : bRemoveQuery = False

			sCurrentLine = replace(Lcase(sCurrentLine), Lcase(sRemoveThis), "")
			
			sNewItem = sTargetPath & "\" & sCurrentLine
			sNewItem = replace(sNewItem, "\\\", "\")
			sNewItem = replace(sNewItem, "\\" , "\")
			'sNewItem = replace(sNewItem, ":" , "")
            sNewFold = left(sTargetPath, len(sTargetPath) -1)
            
            '//Debugging:
            If(bPromptUser) Then
                sAskUser = MsgBox("Do this really?" & vbCRLF & "Create: " & sNewItem _
                & vbCRLF & vbCRLF & "[Yes=Do it and ask again]  [No=Do it all]  [Cancel=Stop script]", _
                vbYesNoCancel + vbQuestion, "Question")
			   End If
			   if (sAskUser = vbCancel) Then WScript.Quit
			   if (sAskUser = vbNo) Then bPromptUser = false
      
            '//Create need path in-between:
            aPaths = split(sCurrentLine, "\")
            for x=0 to Ubound(aPaths) -1
                sNewFold = sNewFold & "\" & aPaths(x)
                If Not FSO.FolderExists(sNewFold) Then FSO.CreateFolder(sNewFold)
            next
            '//Create folder or file:
            sTrailingChar = right(sNewItem,1)
            If (sTrailingChar = "\") Then
                If Not FSO.FolderExists(sNewItem) Then FSO.CreateFolder(sNewItem)
            Else
                If Not FSO.FileExists(sNewItem) Then FSO.CreateTextFile(sNewItem)
            End If
             
  Loop
  oTextStream.Close

Else
 MsgBox "TC file list from parameter %P%N not found. Please select the file list and start this script again."
End If

---
EDIT:
change the "sRemoveThis = InputBox" -part.
 
Last edited by Stefan2 on 2015-03-24, 11:58 UTC, edited 1 time in total.
krojc
Junior Member
Junior Member
Posts: 71
Joined: 2003-08-20, 08:46 UTC

Post by *krojc »

Stefan,
that works great.

I tried 'Parameter: %P%N "%T"

I'll try different ways, but it seems perfect for folder\file. That is what I was looking for.

Thank you!
GoldenMonkey
New Member
New Member
Posts: 1
Joined: 2019-11-26, 12:31 UTC

Re: Create files/dir tree from list

Post by *GoldenMonkey »

Stefan,

thanks, the script works well. It's just that upper-case letters in the list becomes lower-case letters in the directory names.

Thank you again!

Christian
User avatar
petermad
Power Member
Power Member
Posts: 14749
Joined: 2003-02-05, 20:24 UTC
Location: Denmark
Contact:

Re: Create files/dir tree from list

Post by *petermad »

upper-case letters in the list becomes lower-case letters in the directory names.
What is your setting for "Configuration" -> "Options..." -> "Dispaly" -> "Show old 8.3 names in lowercase (like explorer)" ?
License #524 (1994)
Danish Total Commander Translator
TC 11.03 32+64bit on Win XP 32bit & Win 7, 8.1 & 10 (22H2) 64bit, 'Everything' 1.5.0.1371a
TC 3.50b4 on Android 6 & 13
Try: TC Extended Menus | TC Languagebar | TC Dark Help | PHSM-Calendar
User avatar
Stefan2
Power Member
Power Member
Posts: 4133
Joined: 2007-09-13, 22:20 UTC
Location: Europa

Re: Create files/dir tree from list

Post by *Stefan2 »

Hi und willkommen, Christian!
GoldenMonkey wrote: 2019-11-26, 12:38 UTC It's just that upper-case letters in the list becomes lower-case letters in the directory names.

Me guess your names are shorter than 9 chars and you have enabled to show 8.3 filenames lowercase?


Menu "Configuration > Options... > Display" >> [_] Show old 8.3 filenames lowercase (like explorer)





HTH? :D
Post Reply