como fazer um arquivo de lote para renomear uma pasta quando eu iniciar e fechar um programa? [fechadas]

2

Como fazer um arquivo de lote para renomear uma pasta quando inicio um programa? - Digamos que eu queira iniciar o meu word.exe, ao mesmo tempo eu preciso renomear uma pasta c:\users\my profile\my word documents ser estar my documents e quando eu existo word.exe o lote renomeia a pasta para seu nome original.

- editado depois--

aqui o que eu preciso fazer

  1. iniciar o programa
  2. aguarde até que o programa esteja totalmente carregado
  3. renomear a pasta
  4. o programa aguarda até eu fechá-lo
  5. quando eu estou prestes a fechar o programa ele não deve fechar (esperar) até que o lote renomeie a pasta de volta
  6. feche o programa
hsawires
fonte
Indique se deseja que o script em lote inicie seu programa ou o script em lote detecte quando o programa é executado. Este último é muito mais difícil.
Oliver Friedrich
Você precisa dar uma explicação do que você está tentando realizar melhor. Eu sugiro fazer uma nova pergunta com exatamente o que você quer explicar. Você já estragou tudo além da redenção.
krowe
por favor, verifique minha pergunta editada. -Obrigado-
hsawires
Além disso, a parte em que precisamos esperar que ele seja fechado exigirá que o nome do programa (o nome HWND do Windows [ou o título da janela] não seja o nome do arquivo). Por causa disso, um arquivo de lote será uma maneira horrível de fazer isso. Eu usaria .NET ou C eu mesmo. Diga-nos EXATAMENTE qual programa você está usando (inclua a versão). Além disso, diga-nos o que está listado como em Task Manager & gt; Processes.
krowe
1
Renomear o diretório antes de iniciar o Word é fácil, conforme mostrado nas respostas listadas. Mesmo renomear depois que o Word é iniciado é bastante fácil usando algo como start "rename" cmd.exe /c sleep.exe 500 ren "dir1" "dir2". Mas, eu não acho que você pode renomear as pastas antes do Word sair sem escrever um plug-in / extensão do Word. Ou, sem usar algo como AutoHotkey ou AutoIt, em que o Alt + F4 é interceptado pelo AHK, que por sua vez renomeia os diretórios e sai do Word. (Iniciar o Word a partir de um atalho usando o AHK permitiria renomear muito mais precisamente os diretórios também.)
Kody Brown

Respostas:

1

Basta usar o LIGAR instrução para informar ao script em lote para aguardar enquanto o programa está aberto:

@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"

Apenas não feche a janela do lote, senão a pasta não será renomeada depois. Você pode minimizar a probabilidade de isso acontecer usando um atalho para executar o script minimizado ou usar o VBS para executá-lo escondido .

Atualizar

Eu acho que isso deve realizar a tarefa (quase) equivalente, como você pediu sem toda a dor de cabeça. Simplesmente mantendo as cópias intermediárias ao seu redor você deve ser capaz de alcançar o que você realmente quer (o que nós todos ainda estamos adivinhando).

@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%"

Se isso não é bom o suficiente para você, então sua melhor aposta é fazer uma Script VBA ou .LÍQUIDO Suplementos de nível de aplicativo por parte disso, porque isso não pode ser feito na BATCH sozinho.

krowe
fonte
o lote está funcionando tão bem - Obrigado - mas aqui está minha necessidade .. o winword.exe está rodando tão rápido .. Eu preciso renomear a pasta depois que o winword.exe estiver totalmente carregado e na hora que eu escolher fechar winword.exe ele deve renomear a pasta de volta antes de ser totalmente fechada.
hsawires
por favor verifique minha pergunta editada
hsawires
muito obrigado ... mas não deu certo .. ainda aguarde o programa fechar e copie a pasta. ... mas poderia funcionar se o lote fosse executado sem esperar que o programa fosse fechado. algo diferente então CALL e SLEEP Por enquanto, execute o restante do lote (não precisa esperar o programa fechar), talvez a sua primeira solução também funcione.
hsawires
Não. Ele copia a pasta antes mesmo de executar a palavra. Você tem todos os dados. Agora você só precisa entender seu problema o suficiente para resolvê-lo. Isso faz tudo que você precisa. A qualquer momento você tem duas cópias: uma cópia de trabalho e outra antes de você ter carregado a palavra. Substitua a pasta original depois de fechar a palavra. Afora isso, sua pergunta só pode ser melhor resolvida de fora de um arquivo de lote (não importa o que é que você realmente quer) IMHO.
krowe
2

Veja abaixo, você precisa alterar as 4 variáveis ​​para atender às suas necessidades. Salvar este código, adequadamente modificado, como um arquivo em lotes (extensão .bat) e, em seguida, executá-lo a partir da linha de comando (ou de executar / iniciar).

@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
gogoud
fonte
Talvez você indique que o usuário precisa iniciar o script em lotes no lugar do programa desejado.
Oliver Friedrich
Como eu poderia deixar esse lote esperar até que o programa seja completamente carregado e depois renomear. e como renomear a pasta exatamente antes de fechar o programa.
hsawires
o lote é fácil de usar e está funcionando tão bem. ... mas como eu preciso é esperar o software notepad.exe para totalmente carregado antes da pasta está sendo carregada.
hsawires
Não tem certeza porque você está tentando conseguir isso? O Bloco de Notas (que é um programa muito pequeno) deve ser carregado rapidamente - o Word pode levar mais tempo, é claro. Seria fácil iniciar o Bloco de Notas ou o Word em execução e renomear a pasta, mas o problema é dizer quando você sai do programa para renomear a pasta de volta ao seu nome original, posso pensar em maneiras de fazer isso, mas nenhuma que seja fácil e por que isso importa? O uso de START / WAIT contorna o problema, mas a renomeação da pasta inicial deve precedê-lo.
gogoud
2
absolutamente eu apenas usei o bloco de notas porque todo mundo usando o Windows tem isso e acontece que eu não tenho o Word na máquina que estou escrevendo isso de ... eu ainda não entendo porque a ordem de renomear e iniciar / terminar o programa é tão importante para você? ou seja, por que você deseja iniciar o programa, renomeie a pasta e renomeie a pasta antes de fechar o programa. Parece um requisito estranho e difícil de encontrar?
gogoud
0

aqui está uma solução simples,

em um arquivo .bat:

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

um exemplo do meu computador:

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" 

ao executar o arquivo .bat, o arquivo será renomeado e o programa será iniciado, depois que o programa for fechado, o primeiro nome será redefinido.

BOA SORTE,

younes zeboudj
fonte