zui > edb.programmering.* > edb.programmering.basic.visual-basic

Nyheder (17.11.2013, 15:34)
Hej NG

Jeg har en dos komando som jeg har i en .bat fil.

den hedder:
dir /s /b *.* >001_-_Indhold_i_mappe.txt

Det jeg bruger den til er at lave en tekst fil men fil navnene på f.eks. en hardisk.

Det virker sådan set fint, men problemet er æøå der kommer som special tegn.

Er der ikke en måde hvor man kan få ÆØÅ med i tekst filen?

Hílsen
Sten
Hans Kjaergaard (17.11.2013, 15:46)
On Sun, 17 Nov 2013 05:34:32 -0800 (PST), Nyheder <1plus1er2>
wrote:

>Hej NG
>Jeg har en dos komando som jeg har i en .bat fil.
>den hedder:
>dir /s /b *.* >001_-_Indhold_i_mappe.txt
>Det jeg bruger den til er at lave en tekst fil men fil navnene på f.eks. en hardisk.
>Det virker sådan set fint, men problemet er æøå der kommer som special tegn.
>Er der ikke en måde hvor man kan få ÆØÅ med i tekst filen?


Ikke at der er meget VB i det, men jeg har altid brugt det at køre en
søg-og-erstat på selve tekstfilen, 6 gange for at få æøå og ÆØÅ til at
fremgå korrekt, men der er flere andre fælder i det, for hvad med
andre sprogs specialtegn og deslige ?
Så man skal nok lave noget (feks. i VB) der får alle tegn med i første
hug.

/Hans
Christoffer (17.11.2013, 20:01)
"Hans Kjaergaard" <hans.k2teknik> skrev i en
meddelelse
news:gl9r
> On Sun, 17 Nov 2013 05:34:32 -0800 (PST), Nyheder
> <1plus1er2>
> wrote:


Du kan bruge vbs i stedet for, så kan det godt laves æ, ø og
å.

Følgende laver en liste over alle filer i undermapperne. Og
gemmer det til filen list.txt i den mappe hvor vbs-filen
ligger:

'### Start of list.vbs

filepath = Mappath("list.txt")

tmp =
WriteResFile(AllFilesInFoldersSubfolders("c:\"),fi lepath)

Function AllFilesInFoldersSubfolders(varfolder)
'finder alle filer i en mappe og i alle undermapper.
Filnavnene adskilles med linjeskift. tmpvarfolder =
varfolder
if right(tmpvarfolder,1) = "/" or right(tmpvarfolder,1) =
"\" then tmpvarfolder =
left(tmpvarfolder,len(tmpvarfolder)-1)
ReDim mappeArray(1)
ReDim urlArray(1)
mappeArray(0) = tmpvarfolder
urlArray(0) = startUrl
taellerTilfoej = 1
taellerOp = 0
Set fs = CreateObject("Scripting.FileSystemObject")
'danner liste over alle undermapperne (gennem i array)
Do While taellerOp < UBound(mappeArray)
tempsti = mappeArray(taellerOp)
tempurl = urlArray(taellerOp)
'finder undermapper
Set f = fs.GetFolder(tempsti)
Set fc = f.SubFolders
For Each f1 in fc
'hvis kun mapper uden "underscore" eller "and tegn" som
første tegn skal med
If (medUnderscore <> "ON") or (Left(f1.name,1) <> "_" and
Left(f1.name,1) <> "&") Then
ReDim Preserve mappeArray(UBound(mappeArray) + 1)
ReDim Preserve urlArray(UBound(urlArray) + 1)
mappeArray(taellerTilfoej) = (tempsti & "\" & f1.name)
urlArray(taellerTilfoej) = (tempurl & "\" & f1.name)
taellerTilfoej = taellerTilfoej + 1
End If
Next
taellerOp = taellerOp + 1
Loop
'finder filer i mapperne
For tael = 0 To UBound(mappeArray)-1
set f = fs.GetFolder(mappeArray(tael))
Set fc = f.Files
For Each f1 in fc
AllFilesInFoldersSubfolders = AllFilesInFoldersSubfolders &
f.path&"\"&f1.name & VbCrLf
Next
Next
End Function

Function Mappath(value)
Mappath =
left(Wscript.ScriptFullName,InstrRev(Wscript.Scrip tFullName,"\"))
& value
End Function

Function WriteResFile(content,filepath)
'on error resume next
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set a = fso1.OpenTextFile(filepath, 2, True, False)
a.writeline(content)
a.close
Set a = Nothing
Set fso1 = Nothing
End FUnction

'### End of list.vbs

Mvh. Christoffer

Få overblik over nyhedsgrupperne her:
Christoffer (17.11.2013, 20:23)
"Christoffer" <invalid> skrev:
> Du kan bruge vbs i stedet for, så kan det godt laves æ, ø og å.
> Følgende laver en liste over alle filer i undermapperne. Og gemmer det til filen list.txt i den mappe hvor vbs-filen ligger:


Min newsreader laver automatiske linjeskift så jeg prøver lige igen.

'### Start of list.vbs

filepath = Mappath("list.txt")

tmp = WriteResFile(AllFilesInFoldersSubfolders("c:\1"),f ilepath)

Function AllFilesInFoldersSubfolders(varfolder)
'finder alle filer i en mappe og i alle undermapper. Filnavnene adskilles med linjeskift. Senest opdateret: 13:26 01-08-2006.
tmpvarfolder = varfolder
if right(tmpvarfolder,1) = "/" or right(tmpvarfolder,1) = "\" then tmpvarfolder = left(tmpvarfolder,len(tmpvarfolder)-1)
ReDim mappeArray(1)
ReDim urlArray(1)
mappeArray(0) = tmpvarfolder
urlArray(0) = startUrl
taellerTilfoej = 1
taellerOp = 0
Set fs = CreateObject("Scripting.FileSystemObject")
'danner liste over alle undermapperne (gennem i array)
Do While taellerOp < UBound(mappeArray)
tempsti = mappeArray(taellerOp)
tempurl = urlArray(taellerOp)
'finder undermapper
Set f = fs.GetFolder(tempsti)
Set fc = f.SubFolders
For Each f1 in fc
'hvis kun mapper uden "underscore" eller "and tegn" som første tegn skal med
If (medUnderscore <> "ON") or (Left(f1.name,1) <> "_" and Left(f1.name,1) <> "&") Then
ReDim Preserve mappeArray(UBound(mappeArray) + 1)
ReDim Preserve urlArray(UBound(urlArray) + 1)
mappeArray(taellerTilfoej) = (tempsti & "\" & f1.name)
urlArray(taellerTilfoej) = (tempurl & "\" & f1.name)
taellerTilfoej = taellerTilfoej + 1
End If
Next
taellerOp = taellerOp + 1
Loop
'finder filer i mapperne
For tael = 0 To UBound(mappeArray)-1
set f = fs.GetFolder(mappeArray(tael))
Set fc = f.Files
For Each f1 in fc
AllFilesInFoldersSubfolders = AllFilesInFoldersSubfolders & f.path&"\"&f1.name & VbCrLf
Next
Next
End Function

Function Mappath(value)
Mappath = left(Wscript.ScriptFullName,InstrRev(Wscript.Scrip tFullName,"\")) & value
End Function

Function WriteResFile(content,filepath)
'on error resume next
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set a = fso1.OpenTextFile(filepath, 2, True, False)
a.writeline(content)
'a.write("Tekst")
a.close
Set a = Nothing
Set fso1 = Nothing
End FUnction

'### End of list.vbs

Mvh. Christoffer

Få overblik over nyhedsgrupperne her:
Nyheder (18.11.2013, 14:18)
Hej Christoffer.

Tak for koden.

Jeg har nu prøvet den men der kommer en fejl (skriver fejl i linje 19.)

Det er dette jeg har kopieret:

--------------------------------

filepath = Mappath("list.txt")
tmp = WriteResFile(AllFilesInFoldersSubfolders("c:\1"),f ilepath)
Function AllFilesInFoldersSubfolders(varfolder)
'finder alle filer i en mappe og i alle undermapper. Filnavnene adskilles med linjeskift. Senest opdateret: 13:26 01-08-2006.
tmpvarfolder = varfolder
if right(tmpvarfolder,1) = "/" or right(tmpvarfolder,1) = "\" then tmpvarfolder = left(tmpvarfolder,len(tmpvarfolder)-1)
ReDim mappeArray(1)
ReDim urlArray(1)
mappeArray(0) = tmpvarfolder
urlArray(0) = startUrl
taellerTilfoej = 1
taellerOp = 0
Set fs = CreateObject("Scripting.FileSystemObject")
'danner liste over alle undermapperne (gennem i array)
Do While taellerOp < UBound(mappeArray)
tempsti = mappeArray(taellerOp)
tempurl = urlArray(taellerOp)
'finder undermapper
Set f = fs.GetFolder(tempsti)
Set fc = f.SubFolders
For Each f1 in fc
'hvis kun mapper uden "underscore" eller "and tegn" som første tegn skal med
If (medUnderscore <> "ON") or (Left(f1.name,1) <> "_" and Left(f1.name,1) <> "&") Then
ReDim Preserve mappeArray(UBound(mappeArray) + 1)
ReDim Preserve urlArray(UBound(urlArray) + 1)
mappeArray(taellerTilfoej) = (tempsti & "\" & f1.name)
urlArray(taellerTilfoej) = (tempurl & "\" & f1.name)
taellerTilfoej = taellerTilfoej + 1
End If
Next
taellerOp = taellerOp + 1
Loop
'finder filer i mapperne
For tael = 0 To UBound(mappeArray)-1
set f = fs.GetFolder(mappeArray(tael))
Set fc = f.Files
For Each f1 in fc
AllFilesInFoldersSubfolders = AllFilesInFoldersSubfolders & f.path&"\"&f1..name & VbCrLf
Next
Next
End Function
Function Mappath(value)
Mappath = left(Wscript.ScriptFullName,InstrRev(Wscript.Scrip tFullName,"\")) & value
End Function
Function WriteResFile(content,filepath)
'on error resume next
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set a = fso1.OpenTextFile(filepath, 2, True, False)
a.writeline(content)
'a.write("Tekst")
a.close
Set a = Nothing
Set fso1 = Nothing
End FUnction

--------------------

Hilsen

Sten
Nyheder (18.11.2013, 15:09)
Hej

Hvis det er bøvlet at skrive det her er du velkommen til at sende det tilmig på mail 1plus1er2(a'et)ofir.dk

Hilsen

Sten
Christoffer (18.11.2013, 18:15)
"Nyheder" <1plus1er2> skrev i en meddelelse
news:ea13
> Hej


> Hvis det er bøvlet at skrive det her er du velkommen til
> at sende det til mig på mail 1plus1er2(a'et)ofir.dk


Jeg tror bare du skal ændre c:\1 til c:\

Så tager den alle filer på hele c-drevet.

Hvis den giver fejl fordi der er nogen af mapperne der ikke
er adgang til så skal du nok tilføje følgende i toppen af
filen:

on error resume next

Mvh. Christoffer

Få overblik over nyhedsgrupperne her:
Christoffer (18.11.2013, 18:22)
"Nyheder" <1plus1er2> skrev i en meddelelse news:ea13
> Hej


> Hvis det er bøvlet at skrive det her er du velkommen til at sende det til mig på mail 1plus1er2(a'et)ofir.dk


Man kan også lave det om så det ikke bliver udført i en funktion, så bruger det ikke helt så mange ressourcer:

'### Start of list.vbs

filepath = Mappath("list.txt")

varfolder = "c:\"

on error resume next

Set fso1 = CreateObject("Scripting.FileSystemObject")
Set a = fso1.OpenTextFile(filepath, 2, True, False)
a.write("")
a.close
Set a = Nothing
Set fso1 = Nothing

'finder alle filer i en mappe og i alle undermapper. Filnavnene adskilles med linjeskift. tmpvarfolder = varfolder
if right(tmpvarfolder,1) = "/" or right(tmpvarfolder,1) = "\" then tmpvarfolder = left(tmpvarfolder,len(tmpvarfolder)-1)
ReDim mappeArray(1)
ReDim urlArray(1)
mappeArray(0) = tmpvarfolder
urlArray(0) = startUrl
taellerTilfoej = 1
taellerOp = 0
Set fs = CreateObject("Scripting.FileSystemObject")
'danner liste over alle undermapperne (gennem i array)
Do While taellerOp < UBound(mappeArray)
tempsti = mappeArray(taellerOp)
tempurl = urlArray(taellerOp)
'finder undermapper
Set f = fs.GetFolder(tempsti)
Set fc = f.SubFolders
For Each f1 in fc
'hvis kun mapper uden "underscore" eller "and tegn" som første tegn skal med
If (medUnderscore <> "ON") or (Left(f1.name,1) <> "_" and Left(f1.name,1) <> "&") Then
ReDim Preserve mappeArray(UBound(mappeArray) + 1)
ReDim Preserve urlArray(UBound(urlArray) + 1)
mappeArray(taellerTilfoej) = (tempsti & "\" & f1.name)
urlArray(taellerTilfoej) = (tempurl & "\" & f1.name)
taellerTilfoej = taellerTilfoej + 1
End If
Next
taellerOp = taellerOp + 1
Loop
'finder filer i mapperne
For tael = 0 To UBound(mappeArray)-1
set f = fs.GetFolder(mappeArray(tael))
Set fc = f.Files
For Each f1 in fc
tmp = WriteResFile(f.path&"\"&f1.name,filepath)
Next
Next

Function Mappath(value)
Mappath = left(Wscript.ScriptFullName,InstrRev(Wscript.Scrip tFullName,"\")) & value
End Function

Function WriteResFile(content,filepath)
'on error resume next
Set fso1 = CreateObject("Scripting.FileSystemObject")
Set a = fso1.OpenTextFile(filepath, 8, True, False)
a.writeline(content)
a.close
Set a = Nothing
Set fso1 = Nothing
End FUnction

'### End of list.vbs

Mvh. Christoffer

Få overblik over nyhedsgrupperne her:
Nyheder (19.11.2013, 11:06)
Hej Christoffer

Har brugt den sidste. :-)

Der kommer ikke nogen fejl og der kommer en txt fil, men den er desværre tom :-(

Hilsen
Sten
Christoffer (19.11.2013, 16:54)
"Nyheder" <1plus1er2> skrev i en meddelelse news:6957
> Hej Christoffer
> Har brugt den sidste. :-)
> Der kommer ikke nogen fejl og der kommer en txt fil, men den er desværre tom :-(


Så prøv at fjerne "on error resume next" og se hvad der kommer af fejlmeddelelse.

Du kan eventuelt også tilføje i slutningen af filen at der kommer en besked når scriptet er fuldført:

WScript.Echo("Scriptet er fuldført")

Mvh. Christoffer

Få overblik over nyhedsgrupperne her:
Lignende emner