Я написал сценарий для InDesign и использовал doScript для запуска bat-файла. Этот скрипт работает на одних системах и не работает на других. Ошибка на изображении.
Я запускаю InDesign от имени администратора. Но выдает другую ошибку.
Как исправить ошибку?
function batFile(str) {
var path = "~\\AppData\\Roaming\\test\\";
var filename = 'b1.bat';
var file1 = new File(path + filename);
file1.encoding = 'UTF-8';
file1.open('w');
var txt = "systeminfo | findstr /B /C:\"OS Name\" /C:\"OS Version\">%appdata%\\test\\t1.txt"
file1.write(txt);
file1.close();
var cmdcode = "CreateObject(\"WScript.Shell\").Run \"%appdata%\\test\\b1.bat\", 0, True";
app.doScript(cmdcode, ScriptLanguage.visualBasic, undefined, UndoModes.FAST_ENTIRE_SCRIPT);
var result = path + "t1.txt";
var arry = openFile2(result);
if (arry.length != 0) {
return arry;
} else {
return "null";
}
}
**
Обновление
Я нашел проблему. Эта проблема возникает, когда имя пользователя состоит из двух частей, например «ваше имя». Чтобы решить эту проблему, нам нужно поместить адрес в две двойные кавычки.
var txt = "systeminfo | findstr /B /C:\"OS Name\" /C:\"OS Version\">\"%appdata%\\test\\t1.txt"\"
** Обновление 2
В Windows, когда пользователь использует OneDrive, также изменяется путь AppData, из-за чего doScript не запускается. например:
c:\users\username\appdata
Изменения на:
c:\users\username\onedrive\appdata
Это проблема запуска кода в коде и создания предположений о том, в чем заключаются проблемы. Что вы не поясняете, так это то, что вы запускаете JavaScript через InDesign, который динамически создает bat-файл, а затем использует команды VBScript через метод
doScript()
для выполнения bat-файла.