Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Некорректно работающий код (но! не у всех)

Ответить
Настройки темы
CMD/BAT - [решено] Некорректно работающий код (но! не у всех)

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


По результатам отзыва юзеров, получается так, что вот этот простейший кусок cmd-шника порой работает некорректно:

Код: Выделить весь код
set "SkyrimPrefsINI=%USERPROFILE%\Documents\My Games\Skyrim Special Edition\SkyrimPrefs.ini"
set "PluginsListFolder=%USERPROFILE%\AppData\Local\Skyrim Special Edition"
 
if not exist "%SkyrimPrefsINI%" (
cls
color fc
 echo.
 echo.
 echo *ОШИБКА! SkyrimPrefs.ini не найден!
 echo.
 echo Используйте лаунчер игры для задания настроек, согласно своим предпочтениям.
 echo Перезапустите панель управления сборкой для повторного выполнения данной опции.
 echo.
 echo.
pause
exit
)
 
color f2
 @echo.
 @echo.
 @echo  ■ Копируется отсортированный список загрузки модов...
 if not exist "%PluginsListFolder%" md "%PluginsListFolder%"
 copy /y "Silver Raven mods pack data\Plugins list\plugins.txt" "%PluginsListFolder%\"
 
и т.д.
Файл по указанному пути есть - а ошибка все равно отображаетcя. Я хоть убей не могу понять, как такое может быть. cmd не запускают на ОС старее Win7. Это может быть как-то связано с тем, что имя пользователя написано на кириллице?

Отправлено: 11:51, 14-11-2021

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата Silver Raven:
Код: Выделить весь код
set "SkyrimPrefsINI=%USERPROFILE%\Documents\My Games\Skyrim Special Edition\SkyrimPrefs.ini"
»
есть пробелы в пути, значит нужно заковычивать. и заковычиывать не вместе с переменной, а именно значение.
Код: Выделить весь код
set SkyrimPrefsINI="%USERPROFILE%\Documents\My Games\Skyrim Special Edition\SkyrimPrefs.ini"
Дальше аналогично, т.к. скрипт не весь, то не вижу смысла подробнее вычитывать то, про что не спрошено.

Отправлено: 13:57, 14-11-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Elven
Цитата Elven:
есть пробелы в пути, значит нужно заковычивать. и заковычиывать не вместе с переменной, а именно значение. »
Коду не один год и все работает корректно. Если я поставлю кавычки именно на значении, он тут же стопарнется.

Отправлено: 14:55, 14-11-2021 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Elven:
есть пробелы в пути, значит нужно заковычивать. и заковычиывать не вместе с переменной, а именно значение. »
Не надо. Кавычки должны быть в месте раскрытия переменной окружения, а не в месте присваивания пути. В приведённом коде именно так и сделано.

Цитата Silver Raven:
Код: Выделить весь код
set "PluginsListFolder=%USERPROFILE%\AppData\Local\Skyrim Special Edition"
»
Имеет смысл использовать:
Код: Выделить весь код
set "PluginsListFolder=%LOCALAPPDATA%\Skyrim Special Edition"


Цитата Silver Raven:
Файл по указанному пути есть - а ошибка все равно отображаетcя. »
Какая именно ошибка? Попросите прислать скриншот.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:22, 14-11-2021 | #4


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska
Пока, высланные скриншоты ничего конкретного мне не говорят:

https://ibb.co/60Qd56N - попросил убрать @echo off
https://ibb.co/qmZxK98 - описанная мной ошибка

Опишу cmd-шник подробнее:

При запуске проверяется наличие переменной FirstLaunch = true (хранится во внешнем .cfg)
после чего запускается определенный набор действий

Код: Выделить весь код
set "TempConfig=Silver Raven mods pack data\temp_config.tmp"
set "MainConfig=Silver Raven mods pack data\main_config.cfg"
set "HDAudioConfig=Silver Raven mods pack data\hd_audio_config.cfg"
set "ControlPanelFilesList=Silver Raven mods pack data\control_panel_files_list.cfg"

set "ModsPackRussianLocalizationFolder=Silver Raven mods pack data\Additional options\Mods pack russian localization"
set "SkyrimPrefsINI=%USERPROFILE%\Documents\My Games\Skyrim Special Edition\SkyrimPrefs.ini"
set "SkyrimINIFolder=%USERPROFILE%\Documents\My Games\Skyrim Special Edition"
set "PluginsListFolder=%USERPROFILE%\AppData\Local\Skyrim Special Edition"

if "%FirstLaunch%" == "true" (
color f2
 echo.
 echo  ╔══════════════════════════════════════════╗
 echo  ║ Панель управления Silver Raven mods pack ║
 echo  ║      РЕЖИМ ПЕРВОНАЧАЛЬНОЙ НАСТРОЙКИ      ║
 echo  ╚══════════════════════════════════════════╝
 echo.
 echo.
 echo  ■ Копируются файлы русскоязычной локализации модификаций сборки...
 xcopy "%ModsPackRussianLocalizationFolder%" "Data\" /y /e /q
 echo.
 echo.
timeout /t 3
call :option_1_copy_plugins_list_and_ini_settings
)

*здесь другой код, который в момент работы с переменной FirstLaunch - не активен*

:option_1_copy_plugins_list_and_ini_settings
cls
if not exist "%SkyrimPrefsINI%" (
cls
color fc
 echo.
 echo.
 echo *ОШИБКА! SkyrimPrefs.ini не найден!
 echo.
 echo Используйте лаунчер игры для задания настроек, согласно своим предпочтениям.
 echo Перезапустите панель управления сборкой для повторного выполнения данной опции.
 echo.
 echo.
pause
exit
)

color f2
 @echo.
 @echo.
 @echo  ■ Копируется отсортированный список загрузки модов...
 if not exist "%PluginsListFolder%" md "%PluginsListFolder%"
 copy /y "Silver Raven mods pack data\Plugins list\plugins.txt" "%PluginsListFolder%\"

 @echo.
 @echo.
 echo  ■ Редактируется SkyrimPrefs.ini...
)

*далее простыня кода, который тут, наверняка, не чем не поможет*


Многие получают мое заготовленное сообщение о том, что файл SkyrimPrefs.ini не найден, хотя, на самом деле он присутствует по указанному пути. Из-за того, что более-менее подробные данные о ОС дал только один человек, я знаю что у него Win10 x64 и имя профиля написано кириллицей.

Последний раз редактировалось Silver Raven, 14-11-2021 в 19:04.


Отправлено: 18:55, 14-11-2021 | #5



Moderator


Сообщения: 53170
Благодарности: 15429

Профиль | Отправить PM | Цитировать


Цитата Silver Raven:
xcopy "%ModsPackRussianLocalizationFolder%" "Data\" /y /e /q
Для диагностики замените опцию /q на /f и попросите прислать результат.

P.S. Могу только предположить, что дело в относительных путях (зависит от способа запуска вашего cmd-файла).

Последний раз редактировалось Petya V4sechkin, 14-11-2021 в 20:44.


Отправлено: 20:39, 14-11-2021 | #6


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата Silver Raven:
файл SkyrimPrefs.ini не найден, хотя, на самом деле он присутствует по указанному пути »
Было бы здорово проверить существование файла еще одним способом, например через dir:
Код: Выделить весь код
 dir %SkyrimPrefsINI% && echo "exist" || echo "not exist"
Ровно как и проверить существование папок/подпапок в которых он должен находиться.
Ну и значение %USERPROFILE% не помешает проверить.

Отправлено: 20:51, 14-11-2021 | #7


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Цитата Silver Raven:
файл SkyrimPrefs.ini не найден »
Значит его по этому пути нет. Учетная запись на 10-ке может быть online, Майкрософт, тогда Documents находятся в OneDrive. И как там с локализацией, не "Документы" случайно?

Отправлено: 21:01, 14-11-2021 | #8


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Первый (и последующие) запуски происходят по окончанию распаковки на ПК юзера, вот как-то отсюда: https://imgbb.com/fGDXJVV (опять же пример c проблемного ПК)
cmd-шник проверяет наличие SkyrimSE.exe и набора файлов в Silver Raven mods pack data перед началом работы.

Foreigner
Цитата Foreigner:
Учетная запись на 10-ке может быть online, Майкрософт, тогда Documents находятся в OneDrive.»
Узнаю у юзеров. Но по идее все должно перенаправляться в облако само? (а-ля mklink) Программы же как-то ставят свои файлы в папки юзера.

Вот еще отзыв: "лаунчер запускал. SkyrimPrefs.ini лежит по адресу Пользователи/dmitr/Документы/My Games/Skyrim Special Edition.
OC 64-битная Windows10, имя пользователя написано латиницей."


P.S. Могу дать полный cmd-шник и все файлы к нему, если кто-то захочет познакомиться с чудовищем поближе.

Последний раз редактировалось Silver Raven, 14-11-2021 в 22:04.


Отправлено: 21:50, 14-11-2021 | #9


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот, еще подсказали, запросить расположение папки документов юзера такой командой:
Код: Выделить весь код
for /f "tokens=3" %I in (' reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" /v "Personal" 2^>nul ') do echo. User Documents: "%I"

Последний раз редактировалось Silver Raven, 19-11-2021 в 14:02.


Отправлено: 22:17, 14-11-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Некорректно работающий код (но! не у всех)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Запуск $form сверху окон, но не поверх всех. 9119 Скриптовые языки администрирования Windows 14 21-12-2020 09:27
Затемнённый, но работающий экран maxim16 Непонятные проблемы с Железом 1 22-08-2016 20:15
Зависание компьютера в играх, но не во всех :( vassabi Непонятные проблемы с Железом 7 14-04-2013 13:54
Восстановлена работа PlayStation Network, но не для всех OSZone News Новости информационных технологий 0 15-05-2011 18:30
Тормоза!Но не во всех играх. Сашка13 Непонятные проблемы с Железом 4 05-10-2008 14:22




 
Переход