Ho un file .txt salvato sul mio computer. Voglio che Automator aggiunga un po 'di testo al molto in alto del file .txt. Non voglio che nessun testo nel file .txt venga sovrascritto. Voglio anche che venga creata una nuova riga per il nuovo testo.
Il seguente comando aggiunge il testo al file .txt, ma alla fine del file:
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
È possibile eseguire il prepending in un file .txt in AppleScript? Grazie.
Aggiornamento:
Ho scoperto un piccolo bug pernicioso in tutte le attuali 4 risposte a questa domanda.
Le righe vuote in un file .txt creato su un Mac dovrebbero apparire come 0A0A
in un editor esadecimale. Ma, per qualsiasi motivo, le risposte fornite da Matteo, Christian Boyce e user3439894 convertono le righe vuote in 0D0D
. In pratica, 0D0D
produce un risultato identico a 0A0A
- entrambi assomigliano a una riga vuota - ma Mac percepisce 0D0D
come ritorno a capo mentre Mac percepisce 0A0A
come avanzamento riga.
Ecco il test che ho fatto per scoprire questo problema nelle risposte fornite da Matteo e dall'utente3439894 (e se fai lo stesso, puoi riprodurre il problema):
-
Crea un nuovo documento in TextEdit. Fai clic su "Crea testo normale" nel menu Formato. Salva il file vuoto come file .txt.
-
Esegui il codice AppleScript fornito da Matteo, Christian Boyce o utente3439894 utilizzando questo file .txt come TargetFilepath .
-
Apri il file .txt in TextEdit e aggiungi manualmente una riga vuota al file utilizzando la chiave Invio .
-
Apri il file .txt nel tuo editor esadecimale e conferma che questa nuova riga vuota è
0A0A
. -
Esegui di nuovo il codice AppleScript.
-
Apri il file .txt nel tuo editor esadecimale. Noterai ora che
0A0A
è stato convertito in0D0D
.
Ecco il test che ho fatto per scoprire questo problema nella risposta fornita da Christian Boyce:
-
Crea un nuovo documento in TextEdit. Scrivi "Questa è una frase". Il file non può essere vuoto se vuoi eseguire il codice fornito da Christian Boyce senza errori. Fai clic su "Crea testo normale" nel menu Formato. Salva il file come file .txt.
-
Esegui il codice AppleScript fornito da Christian Boyce. Quando ti viene chiesto di scegliere un file, apri questo file .txt.
-
Apri il file .txt in TextEdit e aggiungi manualmente una riga vuota tra il nuovo "Wassup?" linea e la linea originale "Questa è una frase" usando la tua chiave Invio .
-
Apri il file .txt nel tuo editor esadecimale. Si noti che questa nuova riga vuota è
0A0D
. Dovrebbe essere, tuttavia,0A0A
. Quindi, mentre la risposta fornita da Christian Boyce non cambia tutte le istanze di0A0A
in0D0D
(nel modo in cui le risposte fornite da Matteo e user3439894 fanno), usa0D
invece di0A
quando si mette "Wassup?" su una nuova riga.
Mi ci è voluto molto tempo per scoprire questo problema, poiché non si può mai dire che ci fosse un problema con queste soluzioni AppleScript a meno che non si apra il file .txt in un editor esadecimale.
Il problema con la risposta fornita da Mateusz Szlosek è più grave; sostituisce tutte le istanze di 0A0A
con 20
, assicurando così che ci siano no righe vuote ovunque nel file .txt (che, a differenza delle altre risposte, significa che potrei facilmente identificarlo ha avuto un bug senza aprire il file .txt in un editor esadecimale).
Quindi, sto riaprendo questa domanda, sperando ora che qualcuno possa fornire un modo per anteporre il testo a un file .txt utilizzando AppleScript e senza convertire i feed di riga in ritorni a capo nel processo.
Se sei curioso del motivo per cui ho bisogno che i feed di riga siano preservati, è perché ho un processo successivo che scrive sulla prima riga vuota del file .txt e questo processo non funziona correttamente se i feed di riga sono sostituito con ritorni a capo.