IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

sed (de cygwin) dans batch windows : erreur Invalid cross-device link [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut sed (de cygwin) dans batch windows : erreur Invalid cross-device link
    Bonjour,

    je dois passer le script shell Linux suivant (supprime_espaces.sh) en batch Windows Server 2003.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sed -i -- 's/  *;/;/g' $1
    sed -i -- 's/; */;/g' $1
    sed -i -- 's/^\ *//;s/\ *$//' $1
    sed -i -e :a -e '/^\n*$/N;/\n$/ba'  $1
    sed -i -- '/^$/d' $1
    sed -i -- 's/\x0C//g' $1
    J'ai donc utilisé cygwin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C:
    chdir C:\cygwin\bin
    
    bash --login -i /cygdrive/d/monChemin/supprime_espaces.sh "D:\monChemin\monFichier.csv"
    Cela donne une erreur que je n'arrive pas à résoudre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sed: impossible de renommer ./sed6fDjqz: Invalid cross-device link
    sed: impossible de renommer ./sedhuABod: Invalid cross-device link
    sed: impossible de renommer ./sednOh8hh: Invalid cross-device link
    sed: impossible de renommer ./sedSvI5Ka: Invalid cross-device link
    sed: impossible de renommer ./sedsTwOjq: Invalid cross-device link
    sed: impossible de renommer ./sedW9AVHf: Invalid cross-device link
    J'ai mis tous les droits sur les fichiers mais ça n'a rien changé. Quelqu'un a une idée ?
    Christophe

    Pensez à mettre quand c'est le cas.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Je viens de voir qu'en plus il remplace le fichier par un fichier vide !
    Christophe

    Pensez à mettre quand c'est le cas.

  3. #3
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Pas d'idée sur l'erreur en question.

    Par contre je te recommanderais d'appeler ton script comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:
    chdir C:\cygwin\bin
    .\bash --login -i /cygdrive/d/monChemin/supprime_espaces.sh "/cygdrive/d/monChemin/monFichier.csv"
    car je ne pense, même avec Cygwin, que des paramètres de bash ou de sed acceptent les chemins au format Windows (D:\Rep1\Rep2\etc)

    Bonne continuation

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    L'appel fonctionne bien.

    J'ai contourné le problème en supprimant l'option "-i" et là ça marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sed -- 's/  *;/;/g' $1 > tmp.txt
    sed -- 's/; */;/g' tmp.txt > tmp1.txt
    sed -- 's/^\ *//;s/\ *$//' tmp1.txt > tmp.txt
    sed -e :a -e '/^\n*$/N;/\n$/ba'  tmp.txt > tmp1.txt
    sed -- '/^$/d' tmp1.txt > tmp.txt
    sed -- 's/\x0C//g' tmp.txt > $1
    Christophe

    Pensez à mettre quand c'est le cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 21/03/2015, 20h54
  2. [WP 7.1 beta 2] Message d'erreur Invalid cross-thread access
    Par Immobilis dans le forum Windows Phone
    Réponses: 3
    Dernier message: 28/07/2011, 17h21
  3. stocker le résultat d'un sed dans une variable : erreur
    Par ben.IT dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 22/02/2011, 16h35
  4. Réponses: 9
    Dernier message: 24/11/2008, 13h11
  5. [VB.NET]Erreur "invalid cross-thread operation"
    Par NicolasJolet dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/04/2006, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo