[BATCH]Como evitar lectura de archivos

Iniciado por Segadorfelix, 5 Diciembre 2012, 00:18 AM

0 Miembros y 1 Visitante están viendo este tema.

Segadorfelix

Para For
Para ocultar la lectura del comando:
For /F "tokens=*" %%_ IN (archivo.txt) DO (echo %%_)
se debe guardar un archivo (del block de notas) en formato unicode, listo, ya quedo ilegible por for el archivo.  >:D
Para type:
NOTA:Aun permite escribir archivos, con "type archivo.txt>archivo2.txt

He descubierto, que un código unicode, cuando se transforma en ANSI, y se deja en un archivo por lotes, evita la lectura de type, el simbolo es este "→", se transforma en ANSI y se inserta en la parte que no quieren que lea type, todo lo que va después de ese simbolo, no se muestra por el comando type.
Nota:La lectura por for, no la evita.

Por ultimo, les dejo una mini aplicación en batch, que transforma los símbolos unicodes a ANSI.
Sirve para compatibilizar los archivos por lotes(en unicode presentan problemas de sintaxis).
Código (dos) [Seleccionar]

Rem Unicode_To_Ansi=Morf
Rem solo valido unicode, no unicode big endian
Rem acepta caracteres especiales :D
Rem script creado por segadorfelix
Rem funciona por linea de comandos

@echo off
IF ["%~1"]==["-t"] goto text
IF ["%~1"]==["-T"] goto text
IF ["%~1"]==["-f"] goto frase
IF ["%~1"]==["-F"] goto frase
IF ["%~1"]==["-P"] goto palabra
IF ["%~1"]==["-p"] goto palabra
echo Este script transforma un texto en Unicode a Ansi
echo.
echo Funcionamiento del script:
echo morf -T "Ubicacion del text" Trasnfoma un texto completo a ANSI
echo Ejemplo:
echo morf -T "%userprofile%\Desktop\emoticonos.txt"
echo.
echo morf -F "Frase" Trasnfoma una frase a ANSI
echo Ejemplo:
echo morf -F "õl á©illante"
echo=
echo morf -P "Palabra" Trasnfoma una palabra a ANSI
echo Ejemplo:
echo morf -P "á©illante"
echo+
echo Todas las conversiones se ponen en un archivo .ini
echo con el nombre ANSI, junto con un numero al azar,
echo exceptuando transformacion de texto.
echo.
pause
exit /B
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:text
call:texto "%~2"
exit /B
:texto
set text=%~f1
type %text%>>%text%_ANSI
echo Transformacion completada.
echo.
pause
Goto:EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:palabra
set "palabra = %~2"
set "palabra ">nn.ini
for /F "tokens=3" %%y IN (nn.ini) DO (echo %%y>ANSI%random%.ini)
del nn.ini
echo Transformacion completada
echo.
pause
exit /B
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:frase
set "frase = %~2"
set "frase ">nn.ini
FOR /f "tokens=3*" %%a IN (nn.ini) DO (echo %%a %%b>ANSI%random%.ini)
del nn.ini
echo Transformacion completada
echo.
pause
exit /B

PD:lo de "→" es porque corresponde a control+z, en la consola(convertido en ansi); el anterior código posee uno después de los comentarios("REM"). "→" en una misma linea da salto de linea, Ejemplo:
Código (dos) [Seleccionar]
echo %errorlevel%echo esto esta en otra linea
Esto evita lectura por type y ejecuta cada echo en una linea diferente; no se ve porque esta en ANSI, al copiarlo a un notepad, muestra los símbolos.