29. januar 2018 - 12:59
Der er
4 kommentarer og
2 løsninger
DOS Batch Selektere filnavne og ændre ext via batch i flere kataloger
Jeg har prøvet at finde samtlige mine gamle filer med ext *.bas
Det er ikke et problem at finde dem og lægge stierne i en tekstfil (oversigt)
Problemet er, at jeg ønsker at gennemlæse tekstfilen og på baggrund af denne at ændre filernes ect fra *.bas *.b
Den alm. dos kommando rename tager kun hvad der er i aktuelle katalog.
Jeg er startet således:
echo off
cls
dir c:\users\myself\*.bas /s/b >katalog.txt
for /f "tokens=* eol=. Delims=." %%a in (c:\users\myself\katalog.txt) do call :process2 %%a
goto eof
:process2
echo Den fundne line= %*
viser at jeg finder filnavnet i oversigtsfilen
Hvordan
- kommer jeg videre med at læse filnavnene et efter et
- hvordan sættes kommandolinien for renamr filnavn.bas filnavn.b
29. januar 2018 - 14:02
#2
Hej sidwave. Jeg har programmet og ved den gør det i et hug, men som old-man fra datiden ville jeg prøve kræfter i batch/DOS, men tak. mvh Jørn Meyer
29. januar 2018 - 17:32
#4
jeg har en vbs liggende, hvor dialogboks bruges til at pege frem til en mappe, og så viser den alle pdf'er i mappen. Det kan så udbygges, så der er en anden dialogboks, der spørger efter omdøbning, og inkluderer undermapper. Men her er en start at arbejde videre på (skal være .vbs for at kunne køres):
Function Browse4Folder(strPrompt, intOptions, strRoot)
Dim objFolder, objFolderItem
On Error Resume Next
Set objFolder = objShell.BrowseForFolder(0, strPrompt, intOptions, strRoot)
If (objFolder Is Nothing) Then
Wscript.Quit
End If
Set objFolderItem = objFolder.Self
Browse4Folder = objFolderItem.Path
Set objFolderItem = Nothing
Set objFolder = Nothing
End Function
'On Error Resume Next
Const WINDOW_HANDLE = 0
Const BIF_EDITBOX = &H10
Const BIF_NONEWFOLDER = &H0200
Const BIF_RETURNONLYFSDIRS = &H1
Set objShell = CreateObject("Shell.Application")
Set wshShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
' lad bruger vælge mappen, der skal listes
strPrompt = "Vælg den mappe, der skal listes."
intOptions = BIF_RETURNONLYFSDIRS + BIF_NONEWFOLDER + BIF_EDITBOX
strTargetPath = wshShell.SpecialFolders("MyDocuments")
strFolderPath = Browse4Folder(strPrompt, intOptions, strTargetPath)
Set objNewFile = objFSO.CreateTextFile(strFolderPath & "\filliste.txt", True)
Set objFolder = objFSO.GetFolder(strFolderPath)
Set objColFiles = objFolder.Files
objNewFile.WriteLine("Navn,Vejnavn,Husnr,Type")
For Each file In objColFiles
Set objFile = objFSO.GetFile(strFolderPath & "\" & file.Name)
If Lcase(objFSO.GetExtensionName(objFile)) = "pdf" Then
objNewFile.WriteLine(objFSO.GetBaseName(objFile))
End If
Next
objNewFile.Close
Synes godt om
1 synes godt om dette
29. januar 2018 - 21:59
#6
Hej RogerWilco og Claes57.
Tak for input.
Jeg havde lavet en brøler derved, at jeg glemte
goto :eof
for at få for /f
til at virke. Det løste så ikke opgaven, men jeg vil arbejde med jeres oplæg.
Tak for hjælpen begge.
Mvh Jørn Meyer