Page 1 of 1

Accent lettres are lost / FOR loop to make multiple folders

Posted: 14 Oct 2006 15:25
by budhax
Hello,

A.
The accent letters are lost (transformed: è->Š) using this BATCH file
http://dostips.cmdtips.com/DtCodeBatchF ... c145951134
on a French MS Win XP (no SP) system.
How to keep the accent letters ?
We get the accent in a DOS session, I mean the accents appear.

B.
FOR /L %%I in (1,2,5) DO (
SET /A v=1+%%I
MD page%%I_%v%
)
This script should create 3 folders named page1_2, page3_4, page5_6
but it creates page1_, page3_, page5_
Why the variable v is lost ?

Thanks.

Posted: 15 Oct 2006 19:10
by DosItHelp
budhax,

The easy one first:

B)
Your problem is that the command interpreter resolves %v% only once right before executing the for-loop.
To fix this you can either use DELAYEDEXPANSION or run MD in a new batch file context.

Use DELAYEDEXPANSION:

Code: Select all

setlocal ENABLEDELAYEDEXPANSION
FOR /L %%I in (1,2,5) DO (
    SET /A v=1+%%I
    call MD page%%I_!v!
)


Use new batch file context:

Code: Select all

FOR /L %%I in (1,2,5) DO (
    SET /A v=1+%%I
    call MD page%%I_%%v%%
)


DOS IT HELP?

I will get back to you on issue A. :lol:

Posted: 15 Oct 2006 20:42
by DosItHelp
budhax,

Now to your tough one: A :?
Unfortunately I only have an English OS available.
I tried A2 as described below using the accent letter you provided by copying the letter from your forum post into the help.bat. It worked ok, both è and Š appeared properly in the HTML.


Here is something to try out for you.
A1)
-From a command line run: cmd /U
This opens a new batch file context having the output of internal commands to a pipe or file to be Unicode.
-Now run DosCommandRef.bat from that command line.
-Review the accent letters in the output and let me know.

If the accent letters are still transformed then proceed with A2:

A2)
- Download the latest version of DosCommandRef.bat (Important!) and help.bat into same directory:
http://www.dostips.com/DosCommandRef.bat
http://www.dostips.com/help.bat

-Optionally edit help.bat with a text editor and add some more accent letters.
-Run: DosCommandRef.bat
-Review the accent letters in the html output and let me know.

help.bat will emulate the WinXP help command to allow better testing.
In case you modified the help.bat, please post it's content with your reply.
Remove or rename help.bat in order to have DosCommandRef.bat use regular WinXP help information.

Thanks in advance ...

not concluant result

Posted: 16 Oct 2006 12:15
by budhax
B. Thank you very much, it helps a lot.

A1.
Start menu > run > cmd /U
DosCommandRef.bat

and I got:

DOS command reference
Windows Version : Microsoft Windows XP [version 5.1.2600]
Document Source : http://dostips.cmdtips.com/DosCommandRef.php
Created by : DosCommandRef.bat


Test1 Test2

DOS Batch Source Script that created this Document


TOPTest1

This is Test1.
Here some accent letters Þ - è. Review this line in HTML page.


TOPTest2

This is Test2.
Here some accent letters Þ - è. Review this line in HTML page.


help.bat file:

Code: Select all

@ECHO OFF
REM -- Source dostips.com, provided AS-IS, no warranty what so ever.
REM -- This batch fakes out the help command for testing of the DosCommandRef.bat.
if "%~1"=="" (
    echo.Test1
    echo.Test2
    GOTO:EOF
)
rem Below some fake help text.  Add some accent letters for testing:
echo.This is %~1.
echo.Here some accent letters è - Š.  Review this line in HTML page.
echo.


so, è is transformed to Þ
and Š is transformed to è



A2.
I removed help.bat
then run the same line: DosCommandRef.bat
and I got:

DOS command reference
Windows Version : Microsoft Windows XP [version 5.1.2600]
Document Source : http://dostips.cmdtips.com/DosCommandRef.php
Created by : DosCommandRef.bat


Pour ASSOC AT ATTRIB BREAK CACLS CALL CD CHCP CHDIR CHKDSK CHKNTFS CLS CMD COLOR COMP COMPACT CONVERT COPY DATE DEL DIR DISKCOMP DISKCOPY DOSKEY ECHO ENDLOCAL ERASE EXIT FC FIND FINDSTR FOR FORMAT FTYPE GOTO GRAFTABL HELP IF LABEL MD MKDIR MODE MORE MOVE PATH PAUSE POPD PRINT PROMPT PUSHD RD RECOVER REM REN RENAME REPLACE RMDIR SET SETLOCAL SHIFT SORT SUBST START TIME TITLE TREE TYPE VER VERIFY VOL XCOPY

DOS Batch Source Script that created this Document


TOPPour

Cette commande n'est pas prise en charge par l'utilitaire d'aide.
Essayez "x /?".

TOPASSOC

Affiche ou modifie les associations des extensions de fichiers

ASSOC [.ext[=[Type du fichier]]]

.ext Sp‚cifie l'extension de fichier avec laquelle associer le type
Type_de_fichier Sp‚cifie le type de fichier … associer avec l'extension

Entrez ASSOC sans paramŠtres pour afficher les associations actuelles du fichier.
Si ASSOC est appel‚ avec uniquement une extension de fichier, il affiche
l'association de fichier actuelle pour cette extension. Sp‚cifiez nothing pour
le type de fichier et la commande supprimera l'association pour cette extension.


so, accent letters are still transformed :(



Output exemple, from the DOS window on a French MS Windows system:
Start menu > cmd > help assoc

C:\>help ASSOC
Affiche ou modifie les associations des extensions de fichiers

ASSOC [.ext[=[Type du fichier]]]

.ext Spécifie l'extension de fichier avec laquelle associer le type
Type_de_fichier Spécifie le type de fichier à associer avec l'extension

Entrez ASSOC sans paramètres pour afficher les associations actuelles du fichier
.
Si ASSOC est appelé avec uniquement une extension de fichier, il affiche
l'association de fichier actuelle pour cette extension. Spécifiez nothing pour
le type de fichier et la commande supprimera l'association pour cette extension.

[/code]

Posted: 17 Oct 2006 21:27
by DosItHelp
budhax,
Thanks for getting back with the results. This surly is strange :?

After modyfying help.bat to:

Code: Select all

@ECHO OFF
REM -- Source dostips.com, provided AS-IS, no warranty what so ever.
REM -- This batch fakes out the help command for testing of the DosCommandRef.bat.
if "%~1"=="" (
    echo.Test1
    GOTO:EOF
)
rem Below some fake help text.  Add some accent letters for testing:
echo.This is %~1.
echo.Affiche ou modifie les associations des extensions de fichiers
echo.
echo.ASSOC [.ext[=[Type du fichier]]]
echo.
echo..ext Spécifie l'extension de fichier avec laquelle associer le type
echo.Type_de_fichier Spécifie le type de fichier à associer avec l'extension
echo.
echo.Entrez ASSOC sans paramètres pour afficher les associations actuelles du fichier
echo..
echo.Si ASSOC est appelé avec uniquement une extension de fichier, il affiche
echo.l'association de fichier actuelle pour cette extension. Spécifiez nothing pour
echo.le type de fichier et la commande supprimera l'association pour cette extension.

I get the following correct output:
DOS command reference
Windows Version : Microsoft Windows XP [Version 5.1.2600]
Document Source : http://dostips.cmdtips.com/DosCommandRef.php
Created by : DosCommandRef.bat


Test1

DOS Batch Source Script that created this Document


TOPTest1

This is Test1.
Affiche ou modifie les associations des extensions de fichiers

ASSOC [.ext[=[Type du fichier]]]

.ext Spécifie l'extension de fichier avec laquelle associer le type
Type_de_fichier Spécifie le type de fichier à associer avec l'extension

Entrez ASSOC sans paramètres pour afficher les associations actuelles du fichier
.
Si ASSOC est appelé avec uniquement une extension de fichier, il affiche
l'association de fichier actuelle pour cette extension. Spécifiez nothing pour
le type de fichier et la commande supprimera l'association pour cette extension.

This may be related to the code page setting.

Here are two thinkgs to try for you:

A3)
From a command prompt run:
MODE CON CP

Here is what I get:

Code: Select all

C:\>mode con cp

Status for device CON:
----------------------
    Code page:      437

A4)
From a command prompt run:
for %a in (Spécifie paramètres appelé) do @echo.'%a'

Here is what I get:

Code: Select all

C:\>for %a in (Spécifie paramètres appelé) do @echo.'%a'
'Spécifie'
'paramètres'
'appelé'

Let me know. :?

Posted: 20 Oct 2006 16:19
by budhax
A3)
I got:

Code: Select all

C:\>mode con cp

État du périphérique CON:
-------------------------
    Page de codes :   850





A4)
I got:

Code: Select all

C:\>for %a in (Spécifie paramètres appelé) do @echo.'%a'
'Spécifie'
'paramètres'
'appelé'


Using DosCommandRef.bat and your new help.bat file, I got:

DOS command reference
Windows Version : Microsoft Windows XP [version 5.1.2600]
Document Source : http://www.dostips.com/DosCommandRef.php
Created by : DosCommandRef.bat


Test1

DOS Batch Source Script that created this Document


TOPTest1

This is Test1.
Affiche ou modifie les associations des extensions de fichiers

ASSOC [.ext[=[Type du fichier]]]

.ext Spécifie l'extension de fichier avec laquelle associer le type
Type_de_fichier Spécifie le type de fichier à associer avec l'extension

Entrez ASSOC sans paramètres pour afficher les associations actuelles du fichier
.
Si ASSOC est appelé avec uniquement une extension de fichier, il affiche
l'association de fichier actuelle pour cette extension. Spécifiez nothing pour
le type de fichier et la commande supprimera l'association pour cette extension.


So, ...?

Posted: 25 Oct 2006 23:08
by DosItHelp
budhax,

I changed the code settings on my PC to 850 but couldn't reproduce the problem.
It seems that also on your PC the problem cannot be reproduced using the new help.bat file whereas the old help.bat file did show the problem.
Very strange :?

I'll need to look into this later and keep you posted.

What do you get on your system when typing:

Code: Select all

for /f "delims=" %a in ('help assoc') do @echo.%a


?

Posted: 26 Oct 2006 12:03
by budhax
Never mind, it's OK (readable) without accent.

Merci beaucoup pour ton aide.
(Thanks a lot for you help)