none
CMD Определить ОС и выполнить соответствующие действие RRS feed

  • Вопрос

  • Доброго времени и с наступающими!

    Не получается разобраться, вроде все так, но не работает. Т.е. не выполняет действие :a при условии

    IF p==f goto a

    @echo off
    
    set p=%APPDATA%
    set f=C:\Users\%UserName%\AppData\Roaming
    echo %p%
    echo %f%
    pause
    IF p==f goto a
    
    set p="%USERPROFILE%\а Ў®зЁ© бв®«\document's_for_CIT.lnk"
    if not exist %p% goto xcopy
    echo "%COMPUTERNAME% %USERPROFILE%;">>R:\isa2010\bin\exist.txt
    exit
    pause >nul
    exit
    :xcopy
    xcopy "R:\isa2010\bin\document's_for_CIT.lnk" "%USERPROFILE%\а Ў®зЁ© бв®«\"  /y
    echo "%COMPUTERNAME% %USERPROFILE%;">>R:\isa2010\bin\Copy_ok.txt
    exit
    pause
    exit
    
    :a
    set p="%USERPROFILE%\desktop\document's_for_CIT.lnk"
    if not exist %p% goto 7xcopy
    echo "%COMPUTERNAME% %USERPROFILE%;">>R:\isa2010\bin\exist.txt
    exit
    pause >nul
    exit
    :7xcopy
    xcopy "R:\isa2010\bin\document's_for_CIT.lnk" "%USERPROFILE%\desktop\"  /y  
    echo "%COMPUTERNAME% %USERPROFILE%;">>R:\isa2010\bin\Copy_ok.txt
    exit
    pause
    exit
    
    mkdir c:\WORK
    R:\ISA2010\bin\JClientHost.js


     
    30 декабря 2015 г. 7:37

Ответы

  • Ошибка найдена не хватает кавычек при сравнении переменных "%p%" и "%f%", т.к. в переменной %APPDATA% в XP содержаться пробелы "Documents and settings".
    • Помечено в качестве ответа kreativ4eg 30 декабря 2015 г. 12:59
    30 декабря 2015 г. 12:55

Все ответы

  • IF p==f goto a

    а вы еще вот такое условие поставьте

    IF 1==2 goto a

    или сравните ужа с ежом :)

    if %p%==%f% goto a


    • Изменено Svolotch 30 декабря 2015 г. 8:39
    • Предложено в качестве ответа Vector BCOModerator 30 декабря 2015 г. 9:51
    30 декабря 2015 г. 8:37
  • И все равно

    C %% отрабатывает скрипт только на Win7. А без %% только на XP ((( 

    30 декабря 2015 г. 11:33
  • что? вы про что вообще?
    30 декабря 2015 г. 12:15
  • Для определения версии ОС в командных файлах можно использовать следующую конструкцию, она надежно отрабатывает

    ver | findstr "6.1."
    if ERRORLEVEL 1 goto Not_Win7
    
    .....
    
    :Not_Win7
    

    • Предложено в качестве ответа Evgenii Alekseev 30 декабря 2015 г. 18:48
    30 декабря 2015 г. 12:34
    Модератор
  • Ошибка найдена не хватает кавычек при сравнении переменных "%p%" и "%f%", т.к. в переменной %APPDATA% в XP содержаться пробелы "Documents and settings".
    • Помечено в качестве ответа kreativ4eg 30 декабря 2015 г. 12:59
    30 декабря 2015 г. 12:55
  • кажися понял....

    закусывать надо!

    вы этим куском

    set p=%APPDATA%
    set f=C:\Users\%UserName%\AppData\Roaming
    echo %p%
    echo %f%
    pause
    IF p==f goto a

    пытаетесь определить что перед вами, XP или 7ка. Тогда становится понятным бред в заголовке.

    Способ конечно донельзя упоротый, ну да ладно.

    тогда вот так сделайте:

    if "%p%"=="%f%" goto a

    иначе без кавычек у вас в XP из за пробелов в пути документс энд сеттингс вылетает ошибка "and was unexpected at this time." и скрипт прекращает работу.

    а вот в том что 1 не равен 2, и символ  p не равен символу f что в 7ке, что в ХР, это я вас уверяю.


    ----
    ну вот... пока писал ответ уже нашли
    • Изменено Svolotch 30 декабря 2015 г. 13:18
    30 декабря 2015 г. 13:02