Tengo un archivo .txt guardado en mi computadora. Quiero que Automator agregue un poco de texto a la muy superior del archivo .txt. No quiero que se sobrescriba ningún texto en el archivo .txt. También quiero que se cree una nueva línea para el nuevo texto.
El siguiente comando agrega el texto al archivo .txt, pero al final del archivo:
set TextToWrite to "This sentence should be the first line of the .txt file."
set TargetFilepath to "/Users/Me/Desktop/Documents/My File.txt"
do shell script "echo " & quoted form of TextToWrite & " >> " & quoted form of TargetFilepath
¿Se puede realizar la preparación previa a un archivo .txt en AppleScript? Gracias.
Actualización:
Descubrí un pequeño error pernicioso en todas las 4 respuestas actuales a esta pregunta.
Las líneas en blanco en un archivo .txt creado en una Mac deberían aparecer como 0A0A
en un editor hexadecimal. Pero, por el motivo que sea, las respuestas proporcionadas por Matteo, Christian Boyce y user3439894 convierten las líneas en blanco en 0D0D
. En la práctica, 0D0D
produce un resultado idéntico a 0A0A
, ambos parecen una línea en blanco, pero Mac percibe 0D0D
como un retorno de carro mientras que Mac percibe 0A0A
como un salto de línea.
Esta es la prueba que hice para descubrir este problema en las respuestas proporcionadas por Matteo y el usuario 3439894 (y si haces lo mismo, puedes reproducir el problema):
-
Crea un nuevo documento en TextEdit. Haga clic en "Hacer texto sin formato" en el menú Formato. Guarde el archivo vacío como un archivo .txt.
-
Ejecute el código AppleScript proporcionado por Matteo, Christian Boyce o user3439894 utilizando este archivo .txt como TargetFilepath.
-
Abra el archivo .txt en TextEdit y agregue manualmente una línea en blanco al archivo con la tecla Enter .
-
Abra el archivo .txt en su editor hexadecimal y confirme que esta nueva línea en blanco es
0A0A
. -
Vuelve a ejecutar el código AppleScript.
-
Abre el archivo .txt en tu editor hexadecimal. Ahora notará que el
0A0A
se ha convertido a0D0D
.
Esta es la prueba que hice para descubrir este problema en la respuesta provista por Christian Boyce:
-
Crea un nuevo documento en TextEdit. Escribe "Esto es una oración". El archivo no puede estar vacío si desea ejecutar el código proporcionado por Christian Boyce sin error. Haga clic en "Hacer texto sin formato" en el menú Formato. Guarde el archivo como un archivo .txt.
-
Ejecute el código AppleScript que Christian Boyce proporcionó. Cuando se le solicite elegir un archivo, abra este archivo .txt.
-
Abra el archivo .txt en TextEdit y agregue manualmente una línea en blanco entre el nuevo "Wassup?" línea y la línea original "Esto es una oración" usando su Ingresar .
-
Abre el archivo .txt en tu editor hexadecimal. Observe que esta nueva línea en blanco es
0A0D
. Debería ser, sin embargo,0A0A
. Entonces, mientras que la respuesta provista por Christian Boyce no cambia todas las instancias de0A0A
a0D0D
(en la forma en que las respuestas proporcionadas por Matteo y user3439894 do), usa0D
en lugar de0A
al poner "Wassup?" en una nueva línea.
Me tomó mucho tiempo descubrir esta falla, ya que uno nunca podría decir que hubo un problema con estas soluciones AppleScript a menos que uno abra el archivo .txt en un editor hexadecimal.
El problema con la respuesta proporcionada por Mateusz Szlosek es más grave; reemplaza todas las instancias de 0A0A
con 20
, asegurando así que hay no líneas en blanco en cualquier lugar del archivo .txt (lo que, a diferencia de las otras respuestas, significa que puedo identificarlo fácilmente) tuvo un error sin abrir el archivo .txt en un editor hexadecimal).
Por lo tanto, estoy volviendo a abrir esta pregunta, ahora con la esperanza de que alguien pueda proporcionar una forma de anteponer texto a un archivo .txt utilizando AppleScript y sin convertir los saltos de línea en retornos de carro en el proceso.
Si tiene curiosidad por saber por qué necesito que se conserven las fuentes de línea, es porque tengo un proceso posterior que escribe en la primera línea en blanco del archivo .txt, y este proceso no funciona correctamente si las fuentes de línea son reemplazado con retornos de carro.