29. januar 2018 - 12:59Der 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
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
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
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
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.