comment créer un fichier de commandes pour renommer un dossier lorsque je lance et ferme un programme? [fermé]


2

Comment créer un fichier de commandes pour renommer un dossier lorsque je lance un programme? - Disons que je veux commencer mon word.exe, en même temps , je dois renommer un dossier c:\users\my profile\my word documentspour être my documentset quand je le existais word.exedu lot Renommez le dossier à son nom d' origine.

- édité plus tard--

voici ce que je dois faire

  1. démarrer le programme
  2. attendez que le programme soit complètement chargé
  3. renommer le dossier
  4. le programme attend jusqu'à ce que je le ferme
  5. quand je suis sur le point de fermer le programme, il ne doit pas fermer (attendre) jusqu'à ce que le lot renomme le dossier
  6. fermer le programme

Veuillez indiquer si vous souhaitez que le script de traitement par lots lance votre programme ou que le script de traitement par lots détecte le moment où le programme est exécuté. Ce dernier est beaucoup plus difficile.
Oliver Friedrich

Vous devez donner une explication de ce que vous essayez de faire mieux. Je suggère de poser une nouvelle question avec exactement ce que vous voulez expliquer. Vous avez déjà foiré celui-ci au-delà de la rédemption.
Krowe

s'il vous plaît vérifier ma question édité. -Merci vous-
hsawires

De plus, la partie où nous devons attendre la fermeture nécessite que nous trouvions le nom du programme (le nom Windows HWND [ou le titre de la fenêtre] et non le nom du fichier). Pour cette raison, un fichier de commandes va être un moyen horrible de le faire. J'utiliserais .NET ou C moi-même. Dites-nous EXACTEMENT le programme que vous utilisez (incluez la version). De plus, dites-nous ce qui est répertorié dans Task Manager> Processes.
Krowe

1
Renommer le répertoire avant de démarrer Word est facile, comme indiqué dans les réponses répertoriées. Même renommer après le démarrage de Word est assez facile en utilisant quelque chose comme start "rename" cmd.exe /c sleep.exe 500 ren "dir1" "dir2". Mais, je ne pense pas que vous puissiez renommer les dossiers avant que Word ne soit terminé sans écrire un plugin / une extension Word. Ou, sans utiliser quelque chose comme AutoHotkey ou AutoIt, où Alt + F4 est intercepté par AHK, qui à son tour a renommé les répertoires puis a quitté Word. (Démarrer Word à partir d'un raccourci utilisant AHK permettrait également de renommer beaucoup plus précisément les répertoires ..)
Kody Brown

Réponses:


1

Utilisez simplement l' instruction CALL pour indiquer au script de traitement par lots d'attendre pendant que le programme est ouvert:

@ECHO OFF
RENAME "C:\users\my profile\my word documents" "my documents"
CALL "C:\Program Files\Microsoft Office\Office15\winword.exe"
RENAME "C:\users\my profile\my documents" "my word documents"

Ne fermez pas la fenêtre de lot vous-même, sinon le dossier ne sera pas renommé par la suite. Vous pouvez réduire le risque que cela se produise en utilisant un raccourci pour exécuter le script minimisé ou en utilisant VBS pour l'exécuter en mode masqué .

Mettre à jour

Je pense que cela devrait accomplir la tâche (presque) équivalente à celle que vous aviez demandée sans tous les maux de tête. En conservant simplement les copies intermédiaires, vous devriez pouvoir réaliser ce que vous voulez vraiment (ce que nous devinons encore).

@ECHO OFF
SET source=C:\test
SET dest=C:\test_tmp

MKDIR "%dest%"
COPY /Y "%source%\*.*" "%dest%\"
CALL "C:\Program Files\Microsoft Office\Office15\winword.exe"
RMDIR /S /Q "%source%"
MKDIR "%source%"
COPY /Y "%dest%\*.*" "%source%\"
RMDIR /S /Q "%dest%"

Si cela ne vous convient pas, le mieux est de créer un script VBA ou des compléments .NET au niveau de l' application, car cela ne peut pas vraiment être fait dans BATCH seul.


le lot fonctionne si bien -Merci- ... mais voici mon besoin .. le winword.exe s'exécute si vite .. Je dois renommer le dossier une fois que le winword.exe est entièrement chargé et le temps que je choisis Fermez winword.exe, il doit renommer le dossier avant de le fermer complètement.
hsawires

s'il vous plaît vérifier ma question édité
hsawires

merci beaucoup ... mais cela n'a pas fonctionné .. il faut toujours attendre la fermeture du programme puis copier le dossier. ... mais cela pourrait fonctionner si le lot était exécuté sans attendre la fermeture du programme. Quelque chose de différent alors CALLet SLEEPpendant un moment puis exécutez le reste du lot (ne pas avoir à attendre la fermeture du programme) peut-être que votre première solution fonctionne également.
hsawires

Non, il copie le dossier avant même de lancer Word. Vous avez toutes les données. Maintenant, il vous suffit de bien comprendre votre propre problème pour le résoudre. Cela fait tout ce dont vous avez besoin. À tout moment, vous avez deux copies: une copie de travail et une autre avant de charger le mot. Il remplace le dossier d'origine après la fermeture du mot. En dehors de cela, votre question ne peut être mieux résolue que de l'extérieur d'un fichier de commandes (peu importe ce que vous voulez vraiment) à mon humble avis.
Krowe

2

Voir ci-dessous, vous devez modifier les 4 variables pour répondre à vos besoins. Enregistrez ce code, correctement modifié, sous forme de fichier de commandes (extension .bat), puis exécutez-le à partir de la ligne de commande (ou à partir de Exécuter / Démarrer).

@ECHO OFF
SETLOCAL
REM location is the directory below the one you want to rename
SET location=%USERPROFILE%\Documents
SET mydir_pre=testdir1
SET mydir_post=testdir2
SET myprogram=C:\windows\system32\notepad.exe

RENAME "%location%\%mydir_pre%" "%mydir_post%" 2>NUL||ECHO Oops - failed to rename "%location%\%mydir_pre%"&&GOTO :eof
REM start the program, while you are using this instance you will see testdir2
START "My Program" /WAIT "%myprogram%"||ECHO Unable to start %myprogram%&&GOTO :eof
RENAME "%location%\%mydir_post%" "%mydir_pre%" 2>NUL||ECHO Oops - failed to rename "%location%\%mydir_post%"&&GOTO :eof
ECHO Successful completion
ENDLOCAL

Peut-être que vous indiquez que l'utilisateur doit lancer le script de traitement par lots à la place du programme souhaité.
Oliver Friedrich

comment pourrais-je laisser ce lot attendre jusqu'à ce que le programme soit complètement chargé, puis renommer. et comment renommer le dossier exactement avant de fermer le programme.
hsawires

le lot est facile à utiliser et il fonctionne très bien. ... mais il me faut attendre que le logiciel notepad.exe soit complètement chargé avant de charger le dossier.
hsawires

Vous ne savez pas pourquoi vous essayez d'atteindre cet objectif? Notepad (qui est un très petit programme) devrait se charger très rapidement de toute façon - Word pourrait prendre plus de temps bien sûr. Il serait facile de démarrer l’exécution du Bloc-notes ou de Word, puis de renommer le dossier, mais le problème vient de vous dire que lorsque vous quittez le programme pour renommer le dossier en son nom original, je peux penser à des façons de le faire, facile et pourquoi est-ce important? L'utilisation de START / WAIT résout le problème simplement, mais le renom de dossier initial doit le précéder.
Gogoud

2
absolument, je viens d'utiliser le bloc-notes parce que tous ceux qui utilisent Windows l'ont et, en l'occurrence, je n'ai pas Word sur la machine d'où je viens d'écrire ... Je ne comprends toujours pas pourquoi l'ordre de renommer et de démarrer / terminer le programme est si important pour vous? C'est-à-dire pourquoi vous voulez démarrer le programme, puis renommer le dossier, puis le renommer avant de fermer le programme. Vous semblez être une exigence étrange et difficile à satisfaire?
Gogoud

1

voici une solution de contournement simple,

dans un fichier .bat:

rename "path to the file" "NewName"  
"Path to your program" 
rename "path to the file with the new name" "defaultName"

un exemple de mon ordinateur:

rename "C:\Users\myAccount\Desktop\defaultFolder" "NewName" 
"C:\Program Files\BreakPoint Software\Hex Workshop v6.8\HWorks64.exe"
rename "C:\Users\myAccount\Desktop\NewName" "defaultFolder" 

lors de l'exécution du fichier .bat, le fichier est renommé et le programme démarre. Après la fermeture du programme, le prénom est réinitialisé.

BONNE CHANCE,

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.