Question simplifiée :
J'ai un fichier appelé Bíblia sagrada.exe
(noter les í
) sur C:\
de mon ordinateur.
Lorsque j'ouvre une invite de commande sur C:\
et exécuter dir /b /on B*.*
il reviendra :
Bíblia sagrada.exe
c'est-à-dire qu'il n'y a pas de problème avec les symboles diacritiques.
Mais quand je le fais dir /b /on B*.*
> c : \a.txt et ouvrir c:\a.txt
avec le Bloc-notes, il devient :
B¡blia sagrada.exe
c'est-à-dire qu'il remplace í
con ¡
.
Et si j'exécute for /f "delims=" %i in ('dir /b /on B*.*') do %i > %i.txt
il met le nom correct dans le nom du fichier mais à l'intérieur le texte est toujours erroné, c'est à dire ,
Nom de fichier :
Bíblia sagrada.exe.txt
Contenu :
B¡blia sagrada.exe
Que se passe-t-il ?
PS :
Véritable enjeu
Le problème pour moi est pire que ce que j'ai indiqué lors de la première édition, car j'ai lu le contenu d'un fichier txt pour créer un script .vbs et ensuite pour l'exécuter ; en essayant d'exécuter, "il ne comprend pas" qu'il pointe vers "Bíblia sagrada.exe" et il n'exécute pas le programme... c'est-à-dire que j'ai créé un .bat sur le d : \atalhizador\atalhizador.bat :
@echo off
::locais
set drvbak=
set drvprogrs=
set pathbak=%cd%
set pathabove=
set pathprogrs=%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
::identificador da pasta do programa no menu iniciar
set id=_pext1
::determina drives de acordo com paths
for /f "delims=" %%z in ("%pathbak%") do set drvbak=%%~dz
for /f "delims=" %%z in ("%pathprogrs%") do set drvprogrs=%%~dz
::pega caminho superior
cd..
set pathabove=%cd%
cd %pathbak%
cls
echo.***************
echo.* ATALHIZADOR *
echo.***************
echo.
echo.Deseja realmente executar o atalhizador para a pasta:
cd..
echo. %cd%
cd %pathbak%
echo. [s/n]:
set /p ___o=
if not "%___o%"=="s" if not "%___o%"=="S" goto end
echo.
echo.Criando os atalhos...
for /f "delims=" %%a in ('dir /b /ad /on ..') do (
echo.- pasta "%%a"...
echo. ^|-- buscando arquivos atalhizaveis...
if not exist "temp" mkdir "temp"
dir /b /on "..\%%a\*.exe" 1>temp\busca.txt 2>temp\erros.txt
for /f "delims=" %%b in (temp\busca.txt) do (
echo. ^|-- criando atalho para %%b
for /l %%z in (1,1,1) do set __temp__=
if not exist "%pathprogrs%\%id%" mkdir "%pathprogrs%\%id%"
if not exist "%pathprogrs%\%id%\%%a" mkdir "%pathprogrs%\%id%\%%a"
echo.Set oWS = WScript.CreateObject^("WScript.Shell"^) > temp\%%~na-%%~nb.vbs
echo.sLinkFile = "%pathprogrs%\%id%\%%a\%%b.lnk" >> temp\%%~na-%%~nb.vbs
echo.Set oLink = oWS.CreateShortcut^(sLinkFile^) >> temp\%%~na-%%~nb.vbs
echo.oLink.TargetPath = "%pathabove%\%%a\%%b" >> temp\%%~na-%%~nb.vbs
echo.oLink.Save >> temp\%%~na-%%~nb.vbs
cscript /nologo temp\%%~na-%%~nb.vbs
)
)
:end
%drvbak%
cd %pathbak%
pause
@echo off
Le fichier mentionné "Bíblia sagrada.exe" est en d : \B íblia sagrada.
Le fichier .vbs généré est le suivant (supposons qu'il n'y ait que ces deux répertoires sur d :), avec le nom de fichier D:\atalhizador\temp\B íblia Sagrada-Bíblia Sagrada.vbs :
Set oWS = WScript.CreateObject("WScript.Shell")
sLinkFile = "C:\Users\Ubirajara\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\_pext1\B¡blia Sagrada\B¡blia Sagrada.exe.lnk"
Set oLink = oWS.CreateShortcut(sLinkFile)
oLink.TargetPath = "D:\_pext1\B¡blia Sagrada\B¡blia Sagrada.exe"
oLink.Save
Le problème ? Le raccourci n'est pas créé car il ne reconnaît pas "sLinkFile = " C:\Users\Ubirajara\AppData\Roaming\Microsoft\Windows\Start Menu \Programs_pext1\B ¡blia Sagrada \B ¡blia Sagrada.exe.lnk"".
Cela ne se produit pas si je n'utilise pas de diacritiques, mais j'ai vraiment beaucoup de dossiers et de fichiers avec ces signaux...
Comment le corriger pour permettre une écriture correcte sur le fichier .vbs ?
PS2 :
J'ai essayé les commandes suivantes, seules et ensemble, sans succès :
cmd /u
chcp 860
chcp 1200
mode con cp select=860
mode con cp select=1200
J'ai également essayé avec la police raster cmd et avec d'autres polices disponibles...