planification de l'exécution d'un shell bash script dans windows
Aprécier toute l'aide et excusez-moi si ma terminologie est incorrect.
c'est un script(*.sh fichier):
1-va à un particulier d'Un dir
2-les copies des fichiers à partir d'un autre dir B pour Un dir
3-#comented out# il a également dézippe les fichiers dans Un dir et ses sous-répertoires
4-#comented out# il supprime également les lignes 1 à 6 et la dernière rangée de tous *.les fichiers csv dans Un dir
#!/bin/bash
# Configure bash so the script will exit if a command fails.
set -e
#cd to the dir you want to copy to:
cd /cygdrive/c/path/I/want/to/copy/to
#echo Hello
#cp the files i want
#include the subdirectories
cp -r /cygdrive/c/path/I/want/to/copy/from/* .
# This will unzip all .zip files in all subdirectories under this one.
# -o is required to overwrite everything that is in there
#find -iname '*.zip' -execdir unzip -o {} \;
#find ./-iname '*.csv' -exec sed -i '1,6d;$ d' '{}' ';'
Maintenant je peux obtenir ce script fonctionne dans cygwin en allant dans le répertoire où le fichier est stocké et donner les commandes suivantes:
./filename.sh
ou
/cygdrive/c/path/where/the/file/is/filename.sh
ou
bash filename.sh
Je peux aussi le faire dans CMD/DOS sous Windows en procédant comme suit:
C:\cygwin\bin\bash.exe -l
à entrer dans un terminal bash et de donner ensuite la commande suivante:
/cygdrive/c/path/where/the/file/is/filename.sh
Dans le planificateur de tâches(sous Windows) j'ai essayé de planifier les suivantes:
C:\cygwin\bin\bash.exe -l /cygdrive/c/path/where/the/file/is/filename.sh
mais cela ne fonctionne pas, même si, de différentes commandes de travail dans CMD/Windows DOS comme je l'ai dit ci-dessus
Maintenant ce que je veux faire est d'être en mesure de planifier ce script(filename.sh) comme je le ferais un .vbs ou .fichier bat dans windows à l'aide du planificateur de tâches? Quelqu'un peut-il conseiller?
Remarque, j'ai essayé d'écrire un fichier de commandes Windows(.chauve-souris) pour ce faire(voir ci-dessous), mais je ne pouvais pas obtenir mon décompresser et de commandes sed de travail,voir ici. J'ai donc essayé d'écrire le shell Bash script ci-dessus.
chdir C:\pointA
C:\cygwin\bin\cp.exe /cygdrive/v/pointB/* .
::find -iname *.zip -execdir unzip {} \;
::find ./ -iname '*.csv' -exec sed -i '1,6d;$ d' '{}' ';'
- question similaire posée here
Vous devez vous connecter pour publier un commentaire.
Une solution consiste à associer .sh fichiers avec un fichier de commandes qui s'exécute bash. De cette façon, chaque fois que vous dites à windows à l'exécution d'une sh de fichier il va utiliser le bon launcher - si c'est via un double-clic ou d'une tâche planifiée. Voici la mienne:
Associer un type de fichier signifie que lorsque vous essayez d'exécuter un fichier de ce type, windows va utiliser le chemin d'accès à ce fichier comme un argument passé au programme que vous avez spécifié. Par exemple, j'ai LibreOffice4 associée .ods fichiers. Donc, si je double-cliquez sur une .fichier ods, ou saisissez le chemin d'accès à un .ods fichier à l'invite de commande windows utilise open office calc, avec le premier paramètre étant le fichier ods. Donc, si j'ai sans titre.ods sur mon bureau. J'ai double-cliquez dessus. C'est effectivement la même que l'ouverture de l'invite de commande, taper
D:\Program Files (x86)\LibreOffice 4\program\scalc.exe" "C:\Users\Adam\Desktop\Untitled.ods".
et en appuyant sur entrée. En effet, si je le fais, attendu arrive: open office calc démarre et charge le fichier.
Vous pouvez voir comment cela fonctionne, si vous modifiez l'association pour echo.exe (que j'ai trouvé dans D:\cygwin\bin).
Si je modifier l'association à echo, ouvrir l'invite de commande et tapez
"C:\Users\Adam\Desktop\Untitled.ods"
Je vais voir echo.exe echo le nom du fichier à moi.
Donc ce que je vous suggère est de:
C:\cygwin\bin\bash.exe -c -l '/cygdrive/c/path/where/the/file/is/filename.sh'
mais vous ne pouvez pas vous double-cliquez sur le .sh fichier de cette façonpourquoi ne pas créer un fichier batch (.chauve-souris) qui se charge de votre cygwin bashscript et un calendrier ce fichier batch? comme cela, vous n'avez pas à traiter avec la façon dont M$ poignées paramétrée