2010-06-24 8 views
5

Nous avons un fichier de script shell nommé LineFeed.sh qui permet de convertir un saut de ligne (LF) en retour chariot + saut de ligne. Nous voulons que la même chose soit faite par un fichier batch dans Windows. C'est possible?fichier batch + convertir LF en CR + LF

Linux fichier shell

E_WRONGARGS=65 
cat OutputList|while read -r Line 
do 
if [ -z "$Line" ] 
then 
echo "Usage: `basename $0` filename-to-convert" 
exit $E_WRONGARGS 
fi 
NEWFILENAME=$Line.unx 
CR='\015' # Carriage return. 
     # 015 is octal ASCII code for CR. 
     # Lines in a DOS text file end in CR-LF. 
     # Lines in a UNIX text file end in LF only. 
tr -d $CR < $1 > $NEWFILENAME // here its deleting CR but i need to append LF 
# Delete CR's and write to new file. 
done 
echo "Original DOS text file is \"$1\"." 
echo "Converted UNIX text file is \"$NEWFILENAME\"." 
exit 0 
+0

http://www.google.com/search?q=unix2dos.bat – Heinzi

+2

@Heinzi: http://meta.stackexchange.com/questions/5280/embrace-the-non-googlers – Joey

+0

@Johannes: En fait , mon commentaire n'a pas seulement google la question mais contient une réponse. Oui, j'étais trop concis; la version verbeuse serait: «Vous n'avez pas besoin de faire cela vous-même, il y a un script appelé unix2dos qui fait exactement ce que vous voulez et il y a des ports Windows disponibles, généralement appelés' unix2dos.bat'. vous trouverez beaucoup de sources pour le télécharger. " (Encore, je reçois votre point, merci pour le lien.) – Heinzi

Répondre

13

Vous pouvez trouver un chemin sur this Wikipedia page:

TYPE unix_file | FIND "" /V > dos_file 

Rappelez-vous que vous ne pouvez pas rediriger la sortie vers le même fichier que vous lisez. Ceci s'applique à pratiquement tous les systèmes et shells, donc un nouveau nom est nécessaire.

La clé ici est que type sait comment lire les fins de ligne LF et find les convertira ensuite en CRLF. type seul ne fera rien avec la sortie (c'est supposé, car avoir une commande qui saute simplement le contenu du fichier avec eux n'est pas bon :-)).

+3

Votre point étant? – Joey

Questions connexes