Надеюсь, это не повторяющийся вопрос; Я искал без слишком большого количества результатов (в основном, не зная терминов для поиска).Создание сценариев Mathematica с использованием пакетных файлов
В настоящее время у меня есть скрипт mathematica, который открывает файл данных и запускает на нем ряд команд. В сценарии, я должен изменить определенные значения для каждого файла данных, например, analysis_20_70.m может прочитать:
(* ::Package:: *)
Clear[NN, TxyzAll, q, Txyz, twospace, dps, threespace, threeclosed, plane]
datChoice = ReadList[
"/n/homeserver2/user2a/scallion/mathematica/20_70.dat", {Number, Number, Number}];
NN = 51;
% LOTS OF CODE HERE
Export[
"/n/homeserver2/user2a/scallion/mathematica/20_70_time.txt",
time];
Exit[]
Таким образом, редактирования для каждого файла я хочу работать неэффективно. Я новичок в написании сценариев в целом, но подумал, что я могу использовать пакетный скриптинг для автоматизации этого процесса (т.е. сценарий 1 читает 20_70.dat, NN = 51, сценарий 2 читает 20_75.dat, NN = 56, сценарий 3 читает 20_80. Дат, NN = 61 и т.д.)
до сих пор, я сколотил что-то вроде этого:
@echo off
set "begin=20"
set "end=150"
set "count=70"
:LOOP
if %count% GTR %end% (goto END)
(
echo (* ::Package:: *)
echo Clear[NN, TxyzAll, q, Txyz, twospace, dps, threespace, threeclosed, plane]
echo datChoice = ReadList[
echo "/n/homeserver2/user2a/scallion/mathematica/20_70.dat", {Number, Number, Number}];
echo NN = 51;
echo Exit[]
) > testfile_%begin%.txt
set /a count+=5
goto LOOP
:END
(в идеале 20_70.dat бы стать чем-то вроде% начинают% _% Количество% .dat).
Если я заменю середину чем-то простым, например, echo hello world> testfile_% begin% .txt, у меня нет проблем. Тем не менее, попытка распечатать весь скрипт mathematica кажется беспорядочной, и я не знаю, будут ли проблемы с новой строкой/скрытые символы в полученном файле. Таким образом, мои вопросы:
1). есть ли лучший способ напечатать несколько строк, чем поставить эхо перед каждой строкой? и если да, сохранит ли я возможность изменять имена файлов с помощью счетчиков?
2). мой код, естественно, имеет() []; = и другие зарезервированные символы повсюду, поэтому мне показалось, что я должен либо поместить каждую строку в цитаты (в этом случае я не могу удалить кавычки), либо вручную избежать каждого единственного нарушения. Я могу пройти и сделать это, но хотел бы знать, есть ли лучший способ.
3). возможно, что пакетные файлы не подходят. Если есть другие способы решения этой проблемы, я пытаюсь что-то предпринять.
Спасибо всем за помощь!