Toon posts:

[bat] vreemde karakters

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit al dagen zonder resultaat te zoeken op internet. Hopenlijk is er hier iemand die meer weet?

Als ik onderstaand batje run krijg ik vreemde karakters als Œ‚”„ in plaats van áéîö.
Heel irritant met namen als Björk :(
.
code:
1
2
3
for /R %%I IN (*.mp3) do (
    >> list.txt ECHO %%~I
)

  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45

SilentStorm

z.o.z

Dat ligt niet aan je batje, maar aan de karakterset die je gebruikt.

Ik heb even verder gekeken en kom hier referenties aan dos tegen --dos gebruikt een eigen karakterset. Dit betreft echter niet dos, maar een commandline tool. Deze zou gewoon moeten werken met de instellingen die je voor de karakterset mee hebt gegeven. Kun je eens kijken of je onder regional settings in je control panel iets kan veranderen?

edit: ik heb je oplossing gevonden in het cmd commando zelf:
code:
1
2
/U      Causes the output of internal commands to a pipe or file to be
        Unicode


als je dus je console met cmd /u opstart of deze eerst aanroept in je batchbestand zou het wel goed moeten werken.

[ Voor 125% gewijzigd door SilentStorm op 03-01-2004 16:28 ]

Localhost is where the heart is


Verwijderd

Topicstarter
Ik gebruik inderdaad cmd.exe, mijn input language is engels en mijn language setting is western europe & us. Onder advanced regional options zitten code page conversion tables.

Ik dus zojuist mijn keyboard layout verprutst, maar dat geeft niet. :o

Hoe roep je cmd /u in de batch aan?

  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

Verwijderd schreef op 03 januari 2004 @ 16:36:
Hoe roep je cmd /u in de batch aan?
Eh.. kom op, nou geen grapjes gaan maken he :X
Je weet toch wel wat een batchfile is, lijkt me :?

God, root, what is difference? | Talga Vassternich | IBM zuigt


Verwijderd

Topicstarter
moto-moi schreef op 03 januari 2004 @ 16:39:
[...]

Eh.. kom op, nou geen grapjes gaan maken he :X
Je weet toch wel wat een batchfile is, lijkt me :?
Ik meen het!
Ja, ik weet wat een batchfile is, maar kennen en kunnen is niet het zelfde.

Mijn kennis is nog redelijk basaal, en vragen staat vrij.
Graag een antwoord a.u.b.
edit:

cmd.exe /u werkt wel, maar een snelkoppeling naar mijnbat.bat /u werkt niet.

[ Voor 11% gewijzigd door Verwijderd op 03-01-2004 17:05 . Reden: toevoeging ]


Verwijderd

Verwijderd schreef op 03 januari 2004 @ 16:08:
Ik zit al dagen zonder resultaat te zoeken op internet. Hopenlijk is er hier iemand die meer weet?

Als ik onderstaand batje run krijg ik vreemde karakters als Œ‚”„ in plaats van áéîö.
Heel irritant met namen als Björk :(
.
code:
1
2
3
for /R %%I IN (*.mp3) do (
    >> list.txt ECHO %%~I
)
vreemde batchfile.
Je weet dat je commandshell/interpreter CMD.EXE is (NT command prompt)?
deze is ook benaderbaar als %comspec%
bijvoorbeeld: ECHO shell is %comspec%

de oplossing is nog niet zo simpel:
-output onderdrukken
-shell aanroepen met parameter /U
-deze nieuwe shell moet het huidige batchbestand (%0) uitvoeren.
-batchbestand moet kunnen herkennen of dit om eerste instantie van CMD gaat of
om degene met optie /U ingeschakeld ("yes" parameter)

@echo off
if "%1"=="yes" goto next
cmd /u /c %0 yes
goto end
:next
for /R %%I IN (*.mp3) do ECHO %%~I >> list.txt
goto end
:end

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

maybe met "graftabl" maar dan weet ik niet zo gauw welke codepage je moet kiezen

[ Voor 11% gewijzigd door Fish op 03-01-2004 17:07 ]

Iperf


Verwijderd

Topicstarter
Verwijderd schreef op 03 januari 2004 @ 17:04:
[...]
vreemde batchfile.
Je weet dat je commandshell/interpreter CMD.EXE is (NT command prompt)?
deze is ook benaderbaar als %comspec%
bijvoorbeeld: ECHO shell is %comspec%

de oplossing is nog niet zo simpel:
-output onderdrukken
-shell aanroepen met parameter /U
-deze nieuwe shell moet het huidige batchbestand (%0) uitvoeren.
-batchbestand moet kunnen herkennen of dit om eerste instantie van CMD gaat of
om degene met optie /U ingeschakeld ("yes" parameter)

@echo off
if "%1"=="yes" goto next
cmd /u /c %0 yes
goto end
:next
for /R %%I IN (*.mp3) do ECHO %%~I >> list.txt
goto end
:end
Tis een "vreemd" stukje uit een veel complexer batchfile.
%comspec% is nieuw voor mij.

Je oplossing klinkt logisch, maar de output geeft behalve de juiste karakters ook NULL karakters! Ik weet niet waarom?
fish schreef op 03 januari 2004 @ 17:06:
maybe met "graftabl" maar dan weet ik niet zo gauw welke codepage je moet kiezen
Dit zou een eenvoudige oplossing zijn!

C:\>graftabl /status
Active Code Page: 437

Misschien dat graftabl 865 (Norway & Denmark) soelaas bied?
Ik zit nu te proberen hoe dit aangeroepen wordt.

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

mmz mijne hier staat op 850

Iperf


Verwijderd

Topicstarter
Als ik "mode con codepage select=850" aan de batch toevoeg, lijkt het te werken.
code:
1
2
3
4
5
6
7
8
9
10
11
12
C:\>mode con codepage select=850

Status for device CON:
----------------------
    Lines:          300
    Columns:        80
    Keyboard rate:  31
    Keyboard delay: 1
    Code page:      850

C:\>graftabl /status
Active Code Page: 850

Maar de output blijft het zelfde.

Mijn systeem blijft echter op 437 staan. Zou dit het zijn?
fish, heb jij dan niet dergelijke problemen?

  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

neh hier veneukt ie de boel ook .......

Iperf


  • Fish
  • Registratie: Juli 2002
  • Niet online

Fish

How much is the fish

ik heb het hier in 2 stappen opgelost

test.bat
code:
1
cmd /u /c list.bat


en list.bat
code:
1
2
3
for /R %%I IN (*.jpg) do (
    >> list.txt ECHO %%~I
)


niet op null charackters gelet en anders zou ik het ook niet zo gauw weten

[ Voor 13% gewijzigd door Fish op 03-01-2004 18:30 ]

Iperf


  • SilentStorm
  • Registratie: November 2000
  • Laatst online: 18-03 14:45

SilentStorm

z.o.z

Verwijderd schreef op 03 januari 2004 @ 17:55:

Maar de output blijft het zelfde.

Mijn systeem blijft echter op 437 staan. Zou dit het zijn?
fish, heb jij dan niet dergelijke problemen?
Als je de codepage verandert, werkt dat alleen in het huidige cmd window.

werkt het niet gewoon als je binnen de commandshell alsnog cmd /u selecteerd?

code:
1
2
3
4
cmd /u
for /R %%I IN (*.mp3) do (
    >> list.txt ECHO %%~I
)


Wat er gebeurt is natuurlijk hetzelfde als bij fish en BBL the 2nd, maar dan heb je maar 1 batchfile. In BBL the 2nd's oplossing heeft hij rekening gehouden met het feit dat /u mogelijk al opgestart was, maar aangezien deze geen toggle is, zie ik het nut niet om daarop te controleren. En als ik de code goed begrijp mist er nog een '/k [batchfilenaam]' om de functie recursief aan te roepen in 'cmd /u /c %0 yes'.
offtopic:
echo off vindt ik in deze batch ook wat misplaatst. Ik zou zelf graag zien wat er gebeurd ipv een tijd te wachten op een leeg scherm.


Om de NULL waarden eruit te halen, kun je gebruik maken van de functie 'find'. Het wordt dan iets als

code:
1
2
3
4
5
6
7
cmd /u
for /R %%I IN (*.mp3) do (
    >> list.txt ECHO %%~I
)
@find /v "null" >  listing.txt
@del list.txt
%systemroot%\notepad "listing.txt"

[ Voor 16% gewijzigd door SilentStorm op 04-01-2004 01:42 ]

Localhost is where the heart is


Verwijderd

Topicstarter
Bedankt mensen, ik had eerder willen reageren maar het forum was down.

CMD [/U] [/C] [/K] opent bij mij alleen een nieuwe command prompt. Mischien hebben jullie de Resouce Kit geinstalleerd? Ik doe dat bewust niet want het script moet op alle NT machines kunnen draaien.

Voor de volledigheid hier de volledige batch: http://members.tripod.com...download_albumcovers.html
Het is een coole tool om album covers in de media library van Winamp te tonen.

Wat de null karakters betreft daar heb ik alleen last van als ik de oude list.txt niet eerst delete! Omgekeerd krijg ik een hele reeks vraagtekens. Blijkbaar zijn textbestanden niet compatible met elkaar.
De oplossing van BBL werkt nu dus perfect! _/-o_
Het duurde alleen even tot ik door had dat ik de oude list.txt NIET moet laten overschrijven.
code:
1
2
3
4
5
6
7
8
@echo off
if "%1"=="yes" goto next
cmd /u /c %0 yes
goto end
:next
for /R %%I IN (*.mp3) do ECHO %%~I >> list.txt
goto end
:end

[ Voor 4% gewijzigd door Verwijderd op 11-01-2004 18:27 ]

Pagina: 1