2017-06-02 1 views
0

J'essaye actuellement de construire le cadre pour un script AutoIT que j'utiliserai pour enregistrer un certain nombre de fichiers avec de très petits changements pour eux un certain nombre de fois quelque chose comme:Comment faire pour augmenter et augmenter de 1 le nombre de fichiers d'un certain nombre de fois

L'utilisateur insère le nombre de fichiers qu'ils veulent.

Le Bloc-notes s'ouvre et écrit Fichier1.

enregistre automatiquement comme Fichier1.txt

Bloc-notes écrit Fichier2.

Sauvegarde automatiquement en tant que Fichier2.txt.

Et ainsi de suite.

J'ai été capable de comprendre cela dans pywinauto mais quand j'ai essayé de l'appliquer au programme que je voulais utiliser, je n'ai pas réussi à identifier les zones à éditer. Alors maintenant, je suis en train de tentais en AutoIT que je n'ai absolument aucune expérience dans

C'est ce que j'ai jusqu'à présent.

$NumVar = 0 
Run('Notepad') 
WinWait('Untitled - Notepad') 
While ($NumVar < 5) 
    ;Run('Notepad') 
    ;WinWait('Untitled - Notepad') 
    Send('File' & $NumVar) 

    Send('^s') 
    WinWaitActive("Save As") 
    Send("test" & $NumVar & ".txt") 
    Send("{ENTER}") 
    WinActivate("test" & $NumVar) 
    $NumVar = $NumVar + 1 

    ;WinWaitActive("test" & $NumVar & "- Notepad") 
WEnd 
($NumVar > 5) 

Cela fonctionne pour le premier fichier mais après que je reçois quelque chose comme

"File0

fFFFiiiilllelee3e42s! SFile4"

imprimé à bloc-notes.

Toute aide avec ceci serait grandement appréciée.

+1

Je pense que vous devriez essayer de le faire une fois sans la boucle et passer par chaque étape. Par exemple. L'une des premières choses à faire est de lancer le bloc-notes. Après cela, vous allez dans une boucle et exécuter à nouveau le bloc-notes. –

+0

Pourquoi utilisez-vous Send and Run au lieu de AutoIt-Functions natives pour créer des fichiers? Jetez un oeil sur 'FileWrite' /' FileRead' https://www.autoitscript.com/autoit3/docs/ – Yaerox

Répondre

0

Script est incorrect, mais vous pouvez découvrir les détails et résoudre les problèmes en utilisant des techniques simples de débogage:

  • retards de mise en script avec Sleep(), afin que vous puissiez voir chaque étape effectuée, un par un au lieu de vacillement rapide sur la écran
  • Utilisez _DebugOut() pour imprimer les commentaires, afin que vous sachiez quelle étape est en cours d'exécution.

logique script actuel n'est pas OK:

  • Ouvrir le bloc-notes
  • type File0 et appuyez sur ctrl+s. La boîte de dialogue "Enregistrer sous" apparaît.
  • Tapez test0.txt et appuyez sur Entrée. Votre fichier est maintenant enregistré dans "test0.txt", le titre du bloc-notes change en nom de fichier, le contenu du fichier est affiché dans le bloc-notes.
  • Maintenant, les choses vont mal. Le script commence la boucle depuis le début: il tape File1, qui est ajouté au texte File0.
  • Hit ctrl+s ne force pas le dialogue "enregistrer sous". Notepad sait déjà que «test0.txt» est en cours d'édition, donc «test0.txt» est simplement enregistré avec File0File1
  • Le script attend l'activation de la boîte de dialogue «enregistrer sous», mais cela n'arrive jamais, donc le script attend toujours.
  • Vous pouvez supprimer un script bloqué à partir de l'icône de la barre d'état, mais vous semblez lancer la deuxième instance de script à la place, afin qu'ils commencent à interférer. Une fois que la deuxième instance ouvre la boîte de dialogue "Enregistrer sous", les deux instances impriment du texte dans le résultat.

Donc, vous les attentes de l'état du bloc-notes sont erronées, c'est la cause.

Une remarque importante: l'utilisation directe d'éditeurs de texte pour le fonctionnement des fichiers n'est pas la manière la plus simple ni la plus fiable de travailler. Vous devriez regarder dans FileWrite() qui est beaucoup plus pratique.