Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/07/2007, à 11:51

chaoswizard

[Résolu]Script pour découper des fichiers

Salut à tous,

Je viens de faire mon 1er script pour essayer un peu de me simplifier la vie (et m'occuper tongue).

J'ai réaliser ce script qui permet de découper un fichier en morceaux de taille choisis avec 7zip (et donc, ceux utilisant windows pourront aussi décompresser facilement ce fichier).

#!/bin/sh
#
# On teste si un fichier a été sélectionné

    if [ $# -eq 0 ]; then
    zenity --error --title="Erreur" --text="Sélectionnez un fichier"
    exit 1
    fi

# On choisit la taille des morceaux

    taille=$(zenity --title "Taille" --entry --text "Choisir la taille des morceaux (en Mo)")

# On s'assure que les noms de fichiers contenant des espaces fonctionnent

    IFS=$'\n'

# On compresse et on découpe en morceaux de "taille" Mo avec 7zip

    for I in `echo $*`
    do

    7z a -v"$taille"m $I.7z $I | zenity --progress --auto-close --text "Compression en cours..." --pulsate
    pkill 7z

    done
    exit0

# Fini !

     zenity --info --title="Fini" --text="Fini !"

J'ai cependant un petit soucis, les fichier avec un nom contenant des espaces ne fonctionnent pas !

J'ai bien essayé de trouver comment faire mais rien (sur le forum, rien trouver, sur le wiki, les exemples de scripts ne fonctionnent pas avec des espaces et sur Google, j'ai des centaines de réponses, mais rien de potable...).

Si quelqu'un sait comment faire ! smile

Ho, et si quelqu'un a une idée pour améliorer le script existant, je prends aussi !

Merci !

Dernière modification par chaoswizard (Le 17/07/2007, à 14:21)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#2 Le 17/07/2007, à 13:30

trucutu

Re : [Résolu]Script pour découper des fichiers

Si je me trompe pas, le fichier est pris en argument de ton script.
Hors si tu mets des espaces, il va considérer cela comme plusieurs arguments...

Je pense que ca pourrait marcher si tu entre "nom de fichier.ext" ainsi :

script nom\ de\ fichier.ext

Sinon, ya pas un FileChooser dans zenity ? (qui te permettrait de récupèrer le fichier graphiquement => plus user-friendly smile )


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#3 Le 17/07/2007, à 13:35

chaoswizard

Re : [Résolu]Script pour découper des fichiers

trucutu a écrit :

Si je me trompe pas, le fichier est pris en argument de ton script.
Hors si tu mets des espaces, il va considérer cela comme plusieurs arguments...

Je pense que ca pourrait marcher si tu entre "nom de fichier.ext" ainsi :

script nom\ de\ fichier.ext

Sinon, ya pas un FileChooser dans zenity ? (qui te permettrait de récupèrer le fichier graphiquement => plus user-friendly smile )

Ben le but, c'est de faire un clique droit sur le fichier à compresser et découper, on tape la taille et voilà !

Mais justement, je n'arrive pas à faire qu'il prenne en compte les noms de fichier avec espaces.

Sinon, ce que tu proposes marche, mais seulement si j'entre le nom du fichier à la main (?), donc, c'est pas vraiment ce que je veux...

Dernière modification par chaoswizard (Le 17/07/2007, à 13:36)


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#4 Le 17/07/2007, à 13:54

trucutu

Re : [Résolu]Script pour découper des fichiers

Ben si t'arrives déjà à exécuter ton script avec clic droit qui récupère directement la cible cliquée comme arguments, et bien je dirais qu'il faut faire dans ton script une boucle sur la listes des arguments et concatener le tout en une seule chaîne de caractère.


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#5 Le 17/07/2007, à 14:05

chaoswizard

Re : [Résolu]Script pour découper des fichiers

trucutu a écrit :

Ben si t'arrives déjà à exécuter ton script avec clic droit qui récupère directement la cible cliquée comme arguments, et bien je dirais qu'il faut faire dans ton script une boucle sur la listes des arguments et concatener le tout en une seule chaîne de caractère.

Effectivement, ça serait bien !!!

On fait comment ?


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#6 Le 17/07/2007, à 14:07

cushy007

Re : [Résolu]Script pour découper des fichiers

Essaye: for I in $@ au lieu de for I in `echo $*`
le $@ permet d'interpréter les paramètres comme une liste alors que $* les interprète comme une suite de mots (il me semble)

voir cet excellent site : http://abs.traduc.org/abs-4.2.01-fr/index.html

Hors ligne

#7 Le 17/07/2007, à 14:10

Alain.g

Re : [Résolu]Script pour découper des fichiers

salut

Le plus simple est de changer la valeur  de la variable IFS (séparateur de champ) avant la boucle for :

IFS=$'\n'

Xubuntu Karmic !

Hors ligne

#8 Le 17/07/2007, à 14:18

chaoswizard

Re : [Résolu]Script pour découper des fichiers

Essaye: for I in $@ au lieu de for I in `echo $*`
le $@ permet d'interpréter les paramètres comme une liste alors que $* les interprète comme une suite de mots (il me semble)

Ca ne marche pas :

Pour un fichier a b, celà fait a.7z et b.7z et les 2 sont vides...

voir cet excellent site : http://abs.traduc.org/abs-4.2.01-fr/index.html

Énorme merci pour la doc., j'en cherchais une !!!

salut

Le plus simple est de changer la valeur  de la variable IFS (séparateur de champ) avant la boucle for :

IFS=$'\n'

Ha, merci, ça marche très bien !!!

Je modifie le script d'origine pour ceux que ça intéresse !

Encore merci à tous wink


Ubuntu ==> Debian ==> Archlinux

Hors ligne

#9 Le 17/07/2007, à 15:02

qqun

Re : [Résolu]Script pour découper des fichiers

Le plus simple est de changer la valeur  de la variable IFS (séparateur de champ) avant la boucle for :
Code:
IFS=$'\n'

oui ou alors juste rajouter des "" a la variable.

#!/bin/sh
#
# On teste si un fichier a été sélectionné

    if [ $# -eq 0 ]; then
    zenity --error --title="Erreur" --text="Sélectionnez un fichier"
    exit 1
    fi

# On choisit la taille des morceaux

    taille=$(zenity --title "Taille" --entry --text "Choisir la taille des morceaux (en Mo)")

# On compresse et on découpe en morceaux de "taille" Mo avec 7zip

    for I
    do

    7zr a -v"$taille"m ./"$I".7z ./"$I" | zenity --progress --auto-close --text "Compression en cours..." --pulsate
    pkill 7z

    done
    exit0

# Fini !

     zenity --info --title="Fini" --text="Fini !"

#10 Le 12/04/2008, à 15:13

manIP*

Re : [Résolu]Script pour découper des fichiers

Bonjour,

je suis intéressé par ce script, mais étant débutant je ne sais pas trop ou le placer ??

si quelqu'un est très gentil ... smile

#11 Le 19/04/2008, à 14:37

chaoswizard

Re : [Résolu]Script pour découper des fichiers

Tu mets ça dans :

/home/nom_utilisateur/.gnome2/nautilus-scripts


Ubuntu ==> Debian ==> Archlinux

Hors ligne