Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Dos komando

27 views
Skip to first unread message

Nyheder

unread,
Nov 17, 2013, 8:34:32 AM11/17/13
to
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

unread,
Nov 17, 2013, 8:46:33 AM11/17/13
to
On Sun, 17 Nov 2013 05:34:32 -0800 (PST), Nyheder <1plu...@ofir.dk>
wrote:
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

unread,
Nov 17, 2013, 1:01:43 PM11/17/13
to
"Hans Kjaergaard" <hans.k...@post5.tele.dk> skrev i en
meddelelse
news:9shh89lnt9l74hism...@4ax.com...
> On Sun, 17 Nov 2013 05:34:32 -0800 (PST), Nyheder
> <1plu...@ofir.dk>
> 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?

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:\"),filepath)

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.ScriptFullName,"\"))
& 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:
http://www.cht.dk/newsgroups/


Christoffer

unread,
Nov 17, 2013, 1:23:39 PM11/17/13
to
"Christoffer" <inv...@invalid-domain-nospam.com> 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"),filepath)

Function AllFilesInFoldersSubfolders(varfolder)
'finder alle filer i en mappe og i alle undermapper. Filnavnene adskilles med linjeskift. Senest opdateret: 13:26 01-08-2006.
'a.write("Tekst")

Nyheder

unread,
Nov 18, 2013, 7:18:13 AM11/18/13
to
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:

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

Hilsen

Sten

Nyheder

unread,
Nov 18, 2013, 8:09:04 AM11/18/13
to
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

Hilsen

Sten

Christoffer

unread,
Nov 18, 2013, 11:15:39 AM11/18/13
to
"Nyheder" <1plu...@ofir.dk> skrev i en meddelelse
news:6d09c9e8-ca94-4a2f...@googlegroups.com...
> 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

Christoffer

unread,
Nov 18, 2013, 11:22:05 AM11/18/13
to
"Nyheder" <1plu...@ofir.dk> skrev i en meddelelse news:6d09c9e8-ca94-4a2f...@googlegroups.com...
> 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
tmp = WriteResFile(f.path&"\"&f1.name,filepath)
Next
Next

Function Mappath(value)
Mappath = left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName,"\")) & 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

Nyheder

unread,
Nov 19, 2013, 4:06:52 AM11/19/13
to
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

unread,
Nov 19, 2013, 9:54:15 AM11/19/13
to
"Nyheder" <1plu...@ofir.dk> skrev i en meddelelse news:4c8247b2-7d79-4bd9...@googlegroups.com...
> 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")
0 new messages