Actions: Batch over data sets warns about PDF, EPS, DXF and web exports and refuses Save and Close on converted documents

A recorded PDF, EPS, DXF, Save for Web or Save for Office Documents step
that gives a `path` writes the same file for every data set, because the
batch does not point these steps into the destination folder. The one-file
rule now counts them, so the dialog and `action.batch` warn.

Save and Close over the data sets of a document converted from an older
version or restored by Data Recovery is refused with "save the document
with Save As before Save and Close" before a data set is selected. Saving
such a document does not write its file, so the batch reported success
without saving anything. The message has a row in each of the 26 catalogs.
This commit is contained in:
dotCooCoo
2026-11-08 23:50:29 +07:00
committed by bflatastic
parent 2ad0268388
commit 64cfa8b553
30 changed files with 78 additions and 12 deletions
+46 -7
View File
@@ -114,11 +114,12 @@ const ONE_FILE_WARNING: &str = "each data set saves over the same file, which ke
/// Whether an `action.batch` with params `p` plays on data sets of the open document in `s` and
/// writes each data set to the same file. Save and Close saves the open document over its own file
/// after every data set. A step that the batch does not point into `destinationFolder` writes the
/// same file every time when it writes one: a Save, Save As, Save a Copy, Save as Template, Export
/// or Export Selection step that gives a `path`; a Save step without a `path` when the document has
/// a file of its own (saved, and not converted from an older version or restored by Data Recovery)
/// and the step gives no `format` or the document's own; an Export for Screens
/// step whose `folder`, given or from its `exportPreset`, names a folder, whatever the overrides.
/// same file every time when it writes one: a Save, Save As, Save a Copy, Save as Template, Export,
/// Export Selection, PDF, EPS, DXF, Save for Web or Save for Office Documents step that gives a
/// `path`; a Save step without a `path` when the document has a file of its own (saved, and not
/// converted from an older version or restored by Data Recovery) and the step gives no `format` or
/// the document's own; an Export for Screens step whose `folder`, given or from its
/// `exportPreset`, names a folder, whatever the overrides.
/// Other steps return their data instead of writing a file.
pub fn batch_overwrites_one_file(s: &Session, p: &Value) -> bool {
if p.get("source").and_then(Value::as_str) != Some("datasets") {
@@ -146,6 +147,8 @@ pub fn batch_overwrites_one_file(s: &Session, p: &Value) -> bool {
"file.saveAs" => !save && path,
"file.saveCopy" | "file.saveAsTemplate" => path,
"document.export" | "document.exportSelection" => !export && path,
// The batch does not point these exports into `destinationFolder`.
"document.exportPdf" | "document.exportEps" | "document.exportDxf" | "document.exportForWeb" | "document.exportForOffice" => path,
// Override Export sets `path`, which Export for Screens does not read: its `folder` stays.
"document.exportForScreens" => super::screens::with_preset(s, &params).is_ok_and(|p| names(p.get("folder"))),
_ => false,
@@ -199,8 +202,15 @@ fn batch_datasets(s: &mut Session, cmd: &str, run: &Run<'_>) -> Result<Value> {
if names.len() > MAX_BATCH_FILES {
return Err(bad(cmd, format!("more than {MAX_BATCH_FILES} data sets")));
}
if run.destination == "saveAndClose" && st.path.is_none() {
return Err(bad(cmd, "the document has never been saved"));
if run.destination == "saveAndClose" {
if st.path.is_none() {
return Err(bad(cmd, "the document has never been saved"));
}
// `save_plan` writes no file for a document converted from an older version or restored by
// Data Recovery.
if st.converted || st.recovered {
return Err(bad(cmd, "save the document with Save As before Save and Close"));
}
}
let doc_stem = st.path.as_deref().and_then(|p| std::path::Path::new(p).file_stem().and_then(|s| s.to_str())).unwrap_or("Untitled").to_string();
let stems = dataset_stems(&names, &doc_stem, run.dataset_file_naming, run, &st.doc)?;
@@ -1441,6 +1451,35 @@ mod tests {
assert!(!with(json!({"commands": [{"command": "document.exportForScreens", "params": {}}]})));
let preset = json!([{"command": "document.exportForScreens", "params": {"exportPreset": "Logo Package"}}]);
assert!(!with(json!({"commands": preset})), "a preset without a folder: the data comes back");
for id in ["document.exportPdf", "document.exportEps", "document.exportDxf", "document.exportForWeb", "document.exportForOffice"] {
let step = json!([{"command": id, "params": {"path": "/x/a.out"}}]);
assert!(with(json!({"destination": "folder", "destinationFolder": "/out", "commands": step})), "{id} keeps its path");
assert!(!with(json!({"commands": [{"command": id, "params": {}}]})), "{id} without a path: the data comes back");
}
}
#[test]
fn batch_refuses_save_and_close_over_data_sets_of_a_converted_or_recovered_document() {
for converted in [true, false] {
let path = tmp(if converted { "converted-sets" } else { "recovered-sets" }).join("template.vectorcraft");
let mut s = saved_with_two_data_sets(&path);
let bytes = std::fs::read(&path).unwrap();
let (active, revision) = {
let st = s.doc_mut().unwrap();
if converted {
st.converted = true;
} else {
st.recovered = true;
}
(st.doc.variables.active_dataset.clone(), st.revision)
};
let msg = save_and_close_over_data_sets(&mut s).unwrap_err().to_string();
assert!(msg.ends_with("save the document with Save As before Save and Close"), "{msg}");
assert_eq!(std::fs::read(&path).unwrap(), bytes, "the file is not written");
let st = s.doc().unwrap();
assert_eq!(st.doc.variables.active_dataset, active, "no data set is selected");
assert_eq!(st.revision, revision, "no step runs");
}
}
#[test]
+1 -1
View File
@@ -117,7 +117,7 @@ pub fn specs() -> Vec<CommandSpec> {
"Batch…",
[],
None,
"{commands: [{command, params}] (the action's steps), source?: folder (default) | datasets, folder? (required for folder: the source folder), includeSubdirs?: false, destination?: none (default: leave each file open) | saveAndClose (save over the source and close; for source datasets, save the open document over its own file after each data set, and refuse a document that was never saved) | folder (save or export into destinationFolder and close), destinationFolder? (required when destination is folder; also the folder Override Save/Export write into), datasetFileNaming?: fileNumber | fileDataSetName (default) | dataSetName (used only for source datasets; ignored for folder), overrideOpen?: true (skip document.open / file.open steps: the batch opens each source file), overrideSave?: true (point document.save / file.save / file.saveAs at destinationFolder/{stem}.{ext}), overrideExport?: true (point document.export / document.exportForScreens / document.exportSelection the same way), stopOnError?: true, label?} play the commands on every readable file in folder (and its subfolders when includeSubdirs), or on every data set of the open document. Data set names use the document stem plus a three-digit ordinal, the document stem and an underscore plus the data set name, or the data set name alone. Invalid file name characters become `-`; a name already used in the batch or whose output already exists in a destination folder the batch may read and write gets the next free `-2`, `-3` suffix before the format-derived extension. Caps: 500 files or data sets, 8 folder levels, 256 steps. Batches cannot nest. → {processed: [{path|dataset, result|error}…], count, failed, stopped, warning?} (warning: for source datasets, when Save and Close, or a Save, Save a Copy, Save as Template or Export step that writes a file and is not pointed into destinationFolder, saves every data set over the same file)",
"{commands: [{command, params}] (the action's steps), source?: folder (default) | datasets, folder? (required for folder: the source folder), includeSubdirs?: false, destination?: none (default: leave each file open) | saveAndClose (save over the source and close; for source datasets, save the open document over its own file after each data set, and refuse a document that was never saved, was converted from an older version or was restored by Data Recovery) | folder (save or export into destinationFolder and close), destinationFolder? (required when destination is folder; also the folder Override Save/Export write into), datasetFileNaming?: fileNumber | fileDataSetName (default) | dataSetName (used only for source datasets; ignored for folder), overrideOpen?: true (skip document.open / file.open steps: the batch opens each source file), overrideSave?: true (point document.save / file.save / file.saveAs at destinationFolder/{stem}.{ext}), overrideExport?: true (point document.export / document.exportForScreens / document.exportSelection the same way), stopOnError?: true, label?} play the commands on every readable file in folder (and its subfolders when includeSubdirs), or on every data set of the open document. Data set names use the document stem plus a three-digit ordinal, the document stem and an underscore plus the data set name, or the data set name alone. Invalid file name characters become `-`; a name already used in the batch or whose output already exists in a destination folder the batch may read and write gets the next free `-2`, `-3` suffix before the format-derived extension. Caps: 500 files or data sets, 8 folder levels, 256 steps. Batches cannot nest. → {processed: [{path|dataset, result|error}…], count, failed, stopped, warning?} (warning: for source datasets, when Save and Close, or a Save, Save a Copy, Save as Template or export step (document.export, exportSelection, exportForScreens, exportPdf, exportEps, exportDxf, exportForWeb, exportForOffice) that writes a file and is not pointed into destinationFolder, saves every data set over the same file)",
always,
action_batch::action_batch
),
+1
View File
@@ -6100,6 +6100,7 @@ breakText Glyphs Глифи
Data Set Name Име на набора от данни
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` трябва да е `fileNumber`, `fileDataSetName` или `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Всеки набор от данни се записва върху същия файл, в който остава само последният набор от данни.
@msg save the document with Save As before Save and Close запазете документа със „Запази като“ преди „Запази и затвори“
@msg no free data set file name in destination folder Няма свободно име за файл на набор от данни в целевата папка
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6112,6 +6112,7 @@ shape Open Otvoren
Data Set Name Naziv skupa podataka
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` mora biti `fileNumber`, `fileDataSetName` ili `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Svaki skup podataka se sačuva preko iste datoteke, u kojoj ostaje samo posljednji skup podataka.
@msg save the document with Save As before Save and Close sačuvajte dokument pomoću „Sačuvaj kao“ prije „Sačuvaj i zatvori“
@msg no free data set file name in destination folder Nema slobodnog naziva datoteke skupa podataka u odredišnoj mapi
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6256,6 +6256,7 @@ breakText Glyphs Glifs
Data Set Name Nom del conjunt de dades
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` ha de ser `fileNumber`, `fileDataSetName` o `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Cada conjunt de dades es desa sobre el mateix fitxer, que només conserva l'últim conjunt de dades.
@msg save the document with Save As before Save and Close deseu el document amb «Desa com a» abans de «Desa i tanca»
@msg no free data set file name in destination folder No hi ha cap nom de fitxer de conjunt de dades lliure a la carpeta de destinació
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6275,6 +6275,7 @@ breakText Glyphs Glyfy
Data Set Name Název sady dat
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` musí být `fileNumber`, `fileDataSetName` nebo `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Každá sada dat se uloží přes stejný soubor, ve kterém zůstane jen poslední sada dat.
@msg save the document with Save As before Save and Close před „Uložit a zavřít“ uložte dokument pomocí „Uložit jako“
@msg no free data set file name in destination folder V cílové složce není volný název souboru sady dat
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6115,6 +6115,7 @@ breakText Glyphs Glyffer
Data Set Name Datasætnavn
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` skal være `fileNumber`, `fileDataSetName` eller `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Hvert datasæt gemmes oven i den samme fil, som kun beholder det sidste datasæt.
@msg save the document with Save As before Save and Close gem dokumentet med Gem som før Gem og luk
@msg no free data set file name in destination folder Intet ledigt filnavn til datasættet i destinationsmappen
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -5860,6 +5860,7 @@ breakText Glyphs Glyphen
Data Set Name Datensatzname
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` muss `fileNumber`, `fileDataSetName` oder `dataSetName` sein
Each data set saves over the same file, which keeps only the last data set. Jeder Datensatz wird über dieselbe Datei gespeichert, die nur den letzten Datensatz behält.
@msg save the document with Save As before Save and Close speichern Sie das Dokument mit „Speichern unter“, bevor Sie „Speichern und schließen“ wählen
@msg no free data set file name in destination folder Kein freier Dateiname für den Datensatz im Zielordner
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6226,6 +6226,7 @@ breakText Glyphs Γλύφοι
Data Set Name Όνομα συνόλου δεδομένων
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` Το `datasetFileNaming` πρέπει να είναι `fileNumber`, `fileDataSetName` ή `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Κάθε σύνολο δεδομένων αποθηκεύεται πάνω στο ίδιο αρχείο, το οποίο κρατά μόνο το τελευταίο σύνολο δεδομένων.
@msg save the document with Save As before Save and Close αποθηκεύστε το έγγραφο με «Αποθήκευση ως» πριν από «Αποθήκευση και κλείσιμο»
@msg no free data set file name in destination folder Δεν υπάρχει διαθέσιμο όνομα αρχείου συνόλου δεδομένων στον φάκελο προορισμού
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 168 and column 5.
+1
View File
@@ -6217,6 +6217,7 @@ breakText Glyphs Glifos
Data Set Name Nombre del conjunto de datos
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` debe ser `fileNumber`, `fileDataSetName` o `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Cada conjunto de datos se guarda sobre el mismo archivo, que solo conserva el último conjunto de datos.
@msg save the document with Save As before Save and Close guarde el documento con «Guardar como» antes de «Guardar y cerrar»
@msg no free data set file name in destination folder No hay un nombre de archivo libre para el conjunto de datos en la carpeta de destino
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6305,6 +6305,7 @@ breakText Glyphs Merkit
Data Set Name Tietojoukon nimi
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming`-arvon on oltava `fileNumber`, `fileDataSetName` tai `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Jokainen tietojoukko tallennetaan saman tiedoston päälle, johon jää vain viimeinen tietojoukko.
@msg save the document with Save As before Save and Close tallenna asiakirja komennolla Tallenna nimellä ennen kuin valitset Tallenna ja sulje
@msg no free data set file name in destination folder Kohdekansiossa ei ole vapaata tietojoukon tiedostonimeä
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6270,6 +6270,7 @@ breakText Glyphs Glyphes
Data Set Name Nom du jeu de données
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` doit être `fileNumber`, `fileDataSetName` ou `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Chaque jeu de données est enregistré sur le même fichier, qui ne conserve que le dernier jeu de données.
@msg save the document with Save As before Save and Close enregistrez le document avec Enregistrer sous avant Enregistrer et fermer
@msg no free data set file name in destination folder Aucun nom de fichier libre pour le jeu de données dans le dossier de destination
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6259,6 +6259,7 @@ breakText Glyphs Glifák
Data Set Name Adatkészlet neve
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` A `datasetFileNaming` értéke `fileNumber`, `fileDataSetName` vagy `dataSetName` lehet
Each data set saves over the same file, which keeps only the last data set. Minden adatkészlet ugyanabba a fájlba mentődik, amely csak az utolsó adatkészletet őrzi meg.
@msg save the document with Save As before Save and Close mentse a dokumentumot a „Mentés másként” paranccsal a „Mentés és bezárás” előtt
@msg no free data set file name in destination folder Nincs szabad adatkészlet-fájlnév a célmappában
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6115,6 +6115,7 @@ breakText Glyphs Glif
Data Set Name Nama set data
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` harus `fileNumber`, `fileDataSetName`, atau `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Setiap set data disimpan menimpa file yang sama, sehingga hanya set data terakhir yang tersisa.
@msg save the document with Save As before Save and Close simpan dokumen dengan Simpan sebagai sebelum Simpan dan tutup
@msg no free data set file name in destination folder Tidak ada nama file set data yang tersedia di folder tujuan
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2260 and column 5.
+1
View File
@@ -5894,6 +5894,7 @@ breakText Glyphs Glifi
Data Set Name Nome set di dati
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` deve essere `fileNumber`, `fileDataSetName` o `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Ogni set di dati viene salvato sullo stesso file, che conserva solo l'ultimo set di dati.
@msg save the document with Save As before Save and Close salva il documento con «Salva con nome» prima di «Salva e chiudi»
@msg no free data set file name in destination folder Nessun nome file libero per il set di dati nella cartella di destinazione
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -5959,6 +5959,7 @@ breakText Glyphs 字形
Data Set Name データセット名
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` は `fileNumber`、`fileDataSetName`、`dataSetName` のいずれかである必要があります
Each data set saves over the same file, which keeps only the last data set. 各データセットが同じファイルに上書き保存されるため、最後のデータセットだけが残ります。
@msg save the document with Save As before Save and Close 「保存して閉じる」の前に「別名で保存」でドキュメントを保存してください
@msg no free data set file name in destination folder 保存先フォルダーに使用可能なデータセットのファイル名がありません
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6272,6 +6272,7 @@ breakText Glyphs გლიფები
Data Set Name მონაცემთა ნაკრების სახელი
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` უნდა იყოს `fileNumber`, `fileDataSetName` ან `dataSetName`
Each data set saves over the same file, which keeps only the last data set. თითოეული მონაცემთა ნაკრები ერთსა და იმავე ფაილზე ინახება, რომელშიც მხოლოდ ბოლო მონაცემთა ნაკრები რჩება.
@msg save the document with Save As before Save and Close „შენახვა და დახურვამდე“ შეინახეთ დოკუმენტი „შენახვა როგორც“ ბრძანებით
@msg no free data set file name in destination folder დანიშნულების საქაღალდეში მონაცემთა ნაკრებისთვის თავისუფალი ფაილის სახელი არ არის
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it is too large.
+1
View File
@@ -5855,6 +5855,7 @@ breakText Glyphs 글리프
Data Set Name 데이터 세트 이름
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming`은 `fileNumber`, `fileDataSetName` 또는 `dataSetName`이어야 합니다
Each data set saves over the same file, which keeps only the last data set. 각 데이터 세트가 같은 파일에 덮어써지므로 마지막 데이터 세트만 남습니다.
@msg save the document with Save As before Save and Close '저장 후 닫기' 전에 '다른 이름으로 저장'으로 문서를 저장하십시오
@msg no free data set file name in destination folder 대상 폴더에 사용할 수 있는 데이터 세트 파일 이름이 없습니다
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6161,6 +6161,7 @@ breakText Glyphs Glyphs
Data Set Name Naam gegevensset
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` moet `fileNumber`, `fileDataSetName` of `dataSetName` zijn
Each data set saves over the same file, which keeps only the last data set. Elke gegevensset wordt over hetzelfde bestand opgeslagen, dat alleen de laatste gegevensset bewaart.
@msg save the document with Save As before Save and Close sla het document op met Opslaan als voordat u Opslaan en sluiten kiest
@msg no free data set file name in destination folder Geen vrije bestandsnaam voor de gegevensset in de doelmap
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6129,6 +6129,7 @@ breakText Glyphs Glify
Data Set Name Nazwa zestawu danych
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` musi mieć wartość `fileNumber`, `fileDataSetName` lub `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Każdy zestaw danych jest zapisywany w tym samym pliku, który zachowuje tylko ostatni zestaw danych.
@msg save the document with Save As before Save and Close zapisz dokument poleceniem „Zapisz jako” przed „Zapisz i zamknij”
@msg no free data set file name in destination folder Brak wolnej nazwy pliku zestawu danych w folderze docelowym
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6191,6 +6191,7 @@ breakText Glyphs Glifos
Data Set Name Nome do conjunto de dados
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` deve ser `fileNumber`, `fileDataSetName` ou `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Cada conjunto de dados é salvo sobre o mesmo arquivo, que mantém apenas o último conjunto de dados.
@msg save the document with Save As before Save and Close salve o documento com Salvar Como antes de Salvar e fechar
@msg no free data set file name in destination folder Não há nome de arquivo livre para o conjunto de dados na pasta de destino
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 6 and column 47.
+1
View File
@@ -6252,6 +6252,7 @@ breakText Glyphs Глифы
Data Set Name Имя набора данных
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` должно быть `fileNumber`, `fileDataSetName` или `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Каждый набор данных сохраняется поверх одного и того же файла, в котором остаётся только последний набор данных.
@msg save the document with Save As before Save and Close сохраните документ командой «Сохранить как» перед «Сохранить и закрыть»
@msg no free data set file name in destination folder В папке назначения нет свободного имени файла для набора данных
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -6327,6 +6327,7 @@ breakText Glyphs Glyfer
Data Set Name Datauppsättningens namn
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` måste vara `fileNumber`, `fileDataSetName` eller `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Varje datauppsättning sparas över samma fil, som bara behåller den sista datauppsättningen.
@msg save the document with Save As before Save and Close spara dokumentet med Spara som före Spara och stäng
@msg no free data set file name in destination folder Inget ledigt filnamn för datauppsättningen i målmappen
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 5 and column 25.
+1
View File
@@ -6232,6 +6232,7 @@ breakText Glyphs Glifler
Data Set Name Veri kümesi adı
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` değeri `fileNumber`, `fileDataSetName` veya `dataSetName` olmalıdır
Each data set saves over the same file, which keeps only the last data set. Her veri kümesi aynı dosyanın üzerine kaydedilir ve dosyada yalnızca son veri kümesi kalır.
@msg save the document with Save As before Save and Close Kaydet ve Kapat'tan önce belgeyi Farklı Kaydet ile kaydedin
@msg no free data set file name in destination folder Hedef klasörde veri kümesi için boş bir dosya adı yok
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 5 and column 25.
+1
View File
@@ -5874,6 +5874,7 @@ breakText Glyphs Гліфи
Data Set Name Назва набору даних
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` має бути `fileNumber`, `fileDataSetName` або `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Кожен набір даних зберігається поверх того самого файлу, у якому лишається тільки останній набір даних.
@msg save the document with Save As before Save and Close збережіть документ командою «Зберегти як» перед «Зберегти й закрити»
@msg no free data set file name in destination folder У папці призначення немає вільного імені файлу набору даних
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 182 and column 5.
+1
View File
@@ -5875,6 +5875,7 @@ breakText Glyphs Glyph
Data Set Name Tên tập dữ liệu
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` phải là `fileNumber`, `fileDataSetName` hoặc `dataSetName`
Each data set saves over the same file, which keeps only the last data set. Mỗi tập dữ liệu được lưu đè lên cùng một tệp, nên tệp chỉ giữ lại tập dữ liệu cuối cùng.
@msg save the document with Save As before Save and Close hãy lưu tài liệu bằng Lưu thành trước khi dùng Lưu và đóng
@msg no free data set file name in destination folder Không có tên tệp tập dữ liệu còn trống trong thư mục đích
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 204 and column 5.
+1
View File
@@ -6116,6 +6116,7 @@ breakText Glyphs 字形
Data Set Name 数据集名称
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` 必须是 `fileNumber`、`fileDataSetName` 或 `dataSetName`
Each data set saves over the same file, which keeps only the last data set. 每个数据集都会存储到同一个文件并覆盖它,该文件只保留最后一个数据集。
@msg save the document with Save As before Save and Close 请先用“另存为”保存文档,再使用“保存并关闭”
@msg no free data set file name in destination folder 目标文件夹中没有可用的数据集文件名
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 2 and column 73.
+1
View File
@@ -5912,6 +5912,7 @@ breakText Glyphs 字符
Data Set Name 資料集名稱
@msg `datasetFileNaming` must be `fileNumber`, `fileDataSetName` or `dataSetName` `datasetFileNaming` 必須是 `fileNumber`、`fileDataSetName` 或 `dataSetName`
Each data set saves over the same file, which keeps only the last data set. 每個資料集都會儲存到同一個檔案並覆寫它,該檔案只保留最後一個資料集。
@msg save the document with Save As before Save and Close 請先用「另存新檔」儲存文件,再使用「儲存並關閉」
@msg no free data set file name in destination folder 目的地資料夾中沒有可用的資料集檔案名稱
# Path Precision Tools add-on: Path Effects (Effect › Path Effects).
Can't render this file because it contains an unexpected character in line 6 and column 47.
+4 -3
View File
@@ -3516,9 +3516,10 @@ an earlier version 1 set without that flag includes every step. The Actions pane
`action.batch`: the same steps on every readable file in a folder (or every data set of the open document), with
destination `none` | `saveAndClose` | `folder` and Override Open / Save / Export. With a Data Sets source,
`saveAndClose` saves the open document over its own file after each data set, so the file keeps only the last one,
and a document that was never saved is refused before a data set is selected. The result carries `warning` when
every data set saves over the same file: with `saveAndClose`, or with a Save, Save a Copy, Save as Template or
Export step that writes a file and that the batch does not point into `destinationFolder`. The dialog shows the same
and a document that was never saved, was converted from an older version or was restored by Data Recovery is
refused before a data set is selected. The result carries `warning` when every data set saves over the same file:
with `saveAndClose`, or with a Save, Save a Copy, Save as Template or export step (PDF, EPS, DXF, Save for Web and
Save for Office Documents included) that writes a file and that the batch does not point into `destinationFolder`. The dialog shows the same
warning. For a Data Sets source,
`datasetFileNaming?: fileNumber | fileDataSetName | dataSetName` chooses File + Number (`source001`),
File + Data Set Name (`source_Alpha`), or Data Set Name (`Alpha`). An omitted parameter keeps File + Data Set Name
+1 -1
View File
@@ -643,7 +643,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
- Actions panel: the panel menu's Duplicate copies the selected action, else the current action set with all its actions ([Actions panel overview](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/actions-panel-overview.html); `ui.actionSet.duplicate`). VectorCraft's own rules, which the overview does not cover: the copy goes right after the original, is named after it with " copy" added and is selected.
- Batch… over data sets names each file after the document and the data set (`action.batch`). It writes `/`, `\`, `:`, `<`, `>`, `"`, `|`, `?`, `*` and control characters in the data set's name as `-`, and adds `-2`, `-3`… to a name an earlier data set used.
- Batch… offers File + Number, File + Data Set Name, and Data Set Name for a Data Sets source. The dialog defaults to File + Number; `action.batch` without `datasetFileNaming` keeps File + Data Set Name. An output already in a destination folder the batch may read and write gets the next free `-2`, `-3` suffix. [Batch options](https://helpx.adobe.com/illustrator/desktop/automate-visualize-data/automate-actions/batch-options.html).
- Batch… over data sets offers None, Save and Close and Folder as the destination, as for a folder source. Save and Close saves the open document over its own file after each data set, so the file keeps only the last data set. A recorded Save, Save a Copy, Save as Template or Export step that writes a file and that the batch does not point into the destination folder (destination None, Override Save or Override Export off, or a copy or template step) also writes the same file for every data set. In either case the dialog shows a warning and `action.batch` returns a `warning`. `action.batch` refuses Save and Close over the data sets of a document that was never saved.
- Batch… over data sets offers None, Save and Close and Folder as the destination, as for a folder source. Save and Close saves the open document over its own file after each data set, so the file keeps only the last data set. A recorded Save, Save a Copy, Save as Template or export step that writes a file and that the batch does not point into the destination folder (destination None, Override Save or Override Export off, or a copy, template, PDF, EPS, DXF, Save for Web or Save for Office Documents step) also writes the same file for every data set. In either case the dialog shows a warning and `action.batch` returns a `warning`. `action.batch` refuses Save and Close over the data sets of a document that was never saved, was converted from an older version or was restored by Data Recovery.
- Export for Screens: the dialog's Example line shows the path of the file the export writes first, sub-folder included, named as the export names it, for the first chosen artboard, asset, layer or object (`document.exportForScreens`).
- Export presets: the Asset Export panel menu lists the export presets of Export for Screens, with Import Preset… and Export Preset…, which read and write `.vcexportpresets` files (`document.exportPresets.import`, `document.exportPresets.export`). An imported preset whose name is taken gets a number. In the panel, a preset applies to the shared export settings (`assets.settings.set {exportPreset}`), and Save Preset… saves them. With Create Sub-folders off, the panel's Export writes every file into the folder itself, mobile and density rows included.
- Export for Screens is laid out as the reference app's dialog: on the left the Artboards and Assets tabs (thumbnails with their checkboxes, number and name, in a grid or a list), Clear Selection and Prefix; on the right Select (All, Range, Include Bleed, Include Artboard Fill, Full Document), Export to, Open Location after Export, Create Sub-folders by Scale or by Format (on by default), Export PDFs As (Single File writes the chosen artboards as the pages of one PDF named after the document, `pdfs: "single"`), and the format rows with the iOS and Android buttons, the format presets (☰) and Format Settings; under them, how many items are selected and how many files the export writes. File name patterns, the Layers and Selection sources and per-item folders stay available through `document.exportForScreens` (scripts and MCP). Tests: `dialogs::tests_screens` (layout, iOS/Android, Clear Selection, sub-folders, Single File) and `fileio::tests_screens::single_file_pdfs_hold_every_chosen_artboard`.