2

Как сделать командный файл для переименования папки при запуске программы? - Допустим, я хочу запустить свой word.exe, в то же время мне нужно переименовать папку c:\users\my profile\my word documents чтобы они были my documents и когда я существую word.exe пакет переименует папку к своему первоначальному названию.

- отредактировано позже--

вот что мне нужно сделать

  1. запустить программу
  2. дождитесь полной загрузки программы
  3. переименовать папку
  4. программа ждет, пока я ее не закрою
  5. когда я собираюсь закрыть программу, она не должна закрываться (ждать), пока пакет не переименует папку обратно
  6. закройте программу

3 ответа3

2

Смотрите ниже, вам нужно изменить 4 переменные в соответствии с вашими потребностями. Сохраните этот код, соответствующим образом измененный, в виде пакетного файла (расширение .bat), а затем запустите его из командной строки (или из Run/Start).

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

Просто используйте оператор CALL, чтобы сказать пакетному скрипту, что нужно ждать, пока программа открыта:

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

Просто не закрывайте пакетное окно самостоятельно, иначе папка не будет впоследствии переименована. Вы можете минимизировать вероятность этого, используя ярлык для запуска свернутого сценария или используя VBS для его скрытого запуска.

Обновить

Я думаю, что это должно выполнить (почти) эквивалентную задачу, как вы просили, без головной боли. Простое хранение промежуточных копий позволит вам добиться того, чего вы действительно хотите (о чем мы все еще догадываемся).

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

Если это не достаточно хорошо для вас, то лучше всего сделать сценарий VBA или надстройки уровня приложений .NET для части этого, потому что это не может быть сделано в одиночку BATCH.

1

вот простой обходной путь,

в файле .bat:

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

пример с моего компьютера:

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" 

при запуске файла .bat файл будет переименован и программа запустится, после закрытия программы ее имя будет сброшено.

УДАЧИ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .