pero cuando lo ejecuto en .bat no me hace nada, solo me funciona cuando copio esa linea con el mouse y la pego en un CMD y le doy enter
En un archivo
batch-script tienes que duplicar el símbolo
% de la variable del
FOR:
for %%f in (prueba_2017.log
) do type "
%%f"
>>Ping.txt
Al escribir la instrucción directamente en la
CMD, tienes que reducir la cantidad (escribir un
% en lugar de dos
%%), por eso solo te funciona en la
CMD...
De todas formas ese comando no te va a funcionar para el propósito que quieres, puesto que la sintaxis es incorrecta, así lo que haces es leer el nombre del archivo, no las lineas de texto que contiene el archivo... para eso debes usar un
FOR /F:
(
For /F "UseBackQ Tokens=* Delims="
%%#
In ("Input.txt"
) Do (Echo %%~#
) )>"Output.txt"
...Pero si tu intención es, literálmente hablando, copiar el contenido de un archivo a otro, ¿entonces por qué estás usando un
FOR para intentar leer las lineas una a una? (además el comando
FOR ignorará cualquier linea vacía...), eso es completamente innecesario además de expensivo, en su lugar puedes usar el comando
Copy.
Copy "Input.txt" "Output.txt"
...O en su defecto, también puedes utilizar el comando
Type (sin un
FOR de por medio).
(Type "Input.txt")>"Output.txt"
Saludos