2015-03-16 5 views
0

Я пишу сценарий партии, чтобы автоматически нажимать и тянуть на 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 
+0

Я думаю, вы имеете в виду командный скрипт, а не скрипт bash? Bash - Unix или cygwin – texasflood

+0

Да, извините, я имею в виду пакетный скрипт ... –

ответ

3

Я хотел бы предложить, что ваш коллега установил Cygwin так find совершенно другой исполняемый файл (местонахождение-а-файл.)

я укажу find явно, заменив его %SystemRoot%\System32\find.exe. Это обходит cygwin, если он установлен, и использует версию Windows найти. Если cygwin не установлен, безопасно использовать это явное определение - именно там, где Windows найдет исполняемый файл, используя свою обычную стратегию.

Смежные вопросы