Я пишу сценарий партии, чтобы автоматически нажимать и тянуть на git (по причинам, по которым я не буду вдаваться здесь).Почему поведение пакетного скрипта может быть непоследовательным на разных компьютерах?
Сценарий отлично работает на моем компьютере, но не работает на компьютере моих коллег. Он попадает в ту часть, где MessageBox.exe
спрашивает, если вы хотите совершить, но и на его компьютере я тогда получаю сообщение об ошибке
find : yes : Cannot find the specified file or directory.
На моем компьютере скрипт работает нормально. У нас есть одна и та же ОС и т. Д., Поэтому я не знаю с чего начать.
Я знаю, что это очень сложный вопрос, и я новичок в написании сценариев в Windows, но любые подсказки были бы замечательными.
Спасибо!
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
call %~dp0%config.bat
SET scriptPath=%~dp0
SET file=%1
echo Saving current working directory
SET cwd=%cd%
echo Loading SSH key (%SSHKey%)
START "" "%puttyLocation%pageant.exe" "%SSHKey%"
echo Moving to library directory (%libDir%)
cd /D %libDir%
echo Pulling from git....
git pull %remoteName%
echo Changing back to the original directory (%cwd%)
cd /D %cwd%
%easyPCLocation% %file%
echo Moving to library directory (%libDir%)
cd /D %libDir%
git status --porcelain
git status --porcelain > %scriptPath%temp.txt
for %%A in (%scriptPath%temp.txt) do if %%~zA==0 (
echo.No changes to your library have been made.
) ELSE (
echo Changes have been made to your library. Please push them to git now.
!scriptPath!MessageBox.exe "Changes have been made to your library. Please push them to git now.\n\nWould you like up push to git?" "Library updates detected!" YesNo Question Button1 > %scriptPath%temp2.txt
find "yes" !scriptPath!temp2.txt && (
!scriptPath!InputBox.exe "Commit message:" "Updating git..." > !scriptPath!temp2.txt
set /p commitMessage=<!scriptPath!temp2.txt
echo !commitMessage!
git add .
git commit -a -m "!commitMessage!"
git push
) || (
echo REMEMBER to push changes manually!!!!
)
del !scriptPath!temp2.txt
)
del %scriptPath%temp.txt
echo Changing back to the original directory (%cwd%)
cd /D %cwd%
endlocal
Я думаю, вы имеете в виду командный скрипт, а не скрипт bash? Bash - Unix или cygwin – texasflood
Да, извините, я имею в виду пакетный скрипт ... –