Skip to content
GSplit

Project files and batch lists

Advanced reference

Open format, for people who write or generate project files.

A project file stores the settings of a split so you can run it again: the source file, the destination, the piece size, the file naming, the Self-Uniting app and the other options. GSplit 4 writes it with the extension .gsc. It is a plain JSON text file. You can save it from the window, open it in the window or on the command line, and edit or generate it with any text tool.

A batch list is a different file: a text file in the GSplit 3 format that lists several files to split. GSplit 4 reads it on the command line.

GSplit window with the File menu open, showing New project, Open project, Save project and the recent projects list
ActionMenuShortcut
New projectFile > New projectCtrl+N
Open a projectFile > Open project...Ctrl+O
Save the projectFile > Save project...Ctrl+S

The toolbar has Open and Save buttons that do the same. The File menu lists your last five projects; click one to open it. Save project... suggests the source file name followed by .gsc, or gsplit-project.gsc when no source is chosen. Open and Save are disabled while a split is running.

Opening a project replaces the settings of the window, and drops the list of Split multiple files, because a project describes one source file. If the source file no longer exists, the log says so. A file that is not a GSplit project is refused with the message "Not a GSplit configuration file".

In Options, the Default project is a .gsc file that GSplit loads at start. The command line reads it too.

You can also open a project from outside the window: use the Explorer item Open project with GSplit, or run GSplit.exe --open project.gsc. GSplit also opens a .gsc file given as its only argument, so a double-click works once you associate .gsc files with GSplit.exe in Windows (the installer does not register that association).

The console gsplitc reads a project with -c (or --project). See Command line: GSplit and gsplitc for all the options.

Terminal window
gsplitc -c "D:\projects\backup.gsc"
gsplitc "D:\data\other.bin" -c "D:\projects\backup.gsc" --size 650MB
gsplitc -c "D:\projects\backup.gsc" --check
  • With only -c, the source and the destination come from the project (sourceFile, destFolder).
  • A source named on the command line wins over sourceFile.
  • Options on the command line win over the project. A key missing from the file keeps its default.
  • --check validates everything and writes nothing.
  • A GSplit 3 project (XML) is refused with exit code 3: open and save it in GSplit 4 first (see below).
Inside a project file

A project file is a JSON document. This is a short example:

{
"format": "gsplit-config",
"version": 5,
"savedAt": "2026-04-19T12:34:56.000Z",
"project": {
"sourceFile": "D:\\video\\film.mkv",
"destFolder": "E:\\pieces",
"pieceSize": 734003200,
"sizeMode": "size",
"pieceNameMask": "disk{num}.gsd",
"verifyEachPiece": true,
"createGUnite": true
}
}
KeyTypeMeaning
formatstringAlways gsplit-config. A file with another value is not a GSplit project.
versionnumberThe format version. GSplit 4 writes 5.
savedAtstringDate and time of the save, ISO 8601 in UTC.
projectobjectThe settings, described below.

Only the keys listed below are saved. What is running or shown (progress, pieces, log) is not saved. A key that is missing keeps its default, and unknown keys are ignored. File paths are stored as text, not the file itself: the project does not hold the source file's size.

KeyTypeDefaultMeaning
sourceFilestringemptyPath of the file to split.
destFolderstringemptyDestination folder.
clearDestFolderbooleanfalseEmpty the destination folder first.
overwritePolicystring"ask"What to do when a piece name exists: ask, overwrite, skip, rename or refuse. An older file with overwritePieces set to true and no overwritePolicy reads as overwrite. Without it, the window reads ask and the console reads refuse.
openFolderWhenDonebooleantrueOpen the destination folder when the split ends. Window only.
verifyEachPiecebooleantrueRead each piece back after writing it.
createGUnitebooleantrueCopy the Self-Uniting app next to the pieces.
bufferSizenumber65536I/O buffer in bytes.
lowImpactbooleanfalseLow impact mode.
throttleMBpsnumber or nullnullRate cap in MB per second, decimals allowed, 0 for no limit. null is an empty field: the run is refused until a value is typed.
throttlePauseMsnumber0Pause after each block, 0 to 60000 milliseconds.
KeyTypeDefaultMeaning
sizeModestring"size"size, count, pattern or lines.
pieceSizenumber1048576Piece size in bytes (1 MB).
pieceCountTargetnumber2Number of pieces, in count mode and in lines mode with recordsByPieceCount.
spannedbooleanfalseOne piece per removable disk.
progressiveEnabledbooleanfalseThe first pieces take the sizes of progressiveSizes (size mode only).
progressiveSizesstringemptyThe sizes as typed, for example 10 MB, 50 MB, 250 MB.
fillFromEndbooleanfalseFill the pieces from the end of the file.
piecesEnabledbooleanfalseCreate only the pieces listed in pieces.
piecesstringemptyThe pieces to create, as typed: 1, 3-5, 37-.
reserveFirstPiecenumber0Bytes left free in piece 1.
reserveOtherPiecesnumber0Bytes left free in the other pieces.
KeyTypeDefaultMeaning
occurrencePatternstringemptyPattern for the pattern mode. 0xHH is one byte.
occurrenceNumbernumber1Occurrences per piece.
occurrenceSplitBeforebooleanfalseCut before the pattern.
recordsPerPiecenumber10000Lines (records) per piece in lines mode.
recordsByPieceCountbooleanfalseIn lines mode, make pieceCountTarget pieces instead of recordsPerPiece lines.
csvQuotedbooleanfalseCSV records: a quoted field may span lines.
recordMaxEnabledbooleanfalseA piece also ends before its file exceeds recordMaxSize.
recordMaxSizenumber or null10The maximum piece size. null is an empty field: the run, and the console, refuse the project (exit code 3).
recordMaxUnitstring"MB"B, KB, MB or GB.
recordRegexEnabledbooleanfalseA record ends at each match of recordRegex.
recordRegexstringemptyThe regular expression.
recordRegexGroupnumber0The capture group that gives the cut; 0 is the whole match.
recordRegexBeforebooleanfalseCut before the group.
KeyTypeDefaultMeaning
pieceNameMaskstring"disk{num}.gsd"Piece names.
noPieceHeadersbooleanfalseRaw pieces without metadata.
insertCustomHeaderbooleanfalseRepeat a header at the start of pieces 2 to n.
customHeaderstringemptyThe header text. Empty is the automatic header.
headerLinesnumber1Lines taken by the automatic header. A value below 1 falls back to 1.
headerOnFirstPiecebooleanfalseThe typed header opens piece 1 too.
insertFooterbooleanfalseWrite a footer at the end of every piece.
footerstringemptyThe footer text.
insertBOMbooleanfalseRepeat the source's byte order mark.
pieceSetTitlestringemptyTitle of the piece set.
pieceSetAuthorstringemptyAuthor of the piece set.
pieceSetDescstringemptyDescription of the piece set.
pieceSetIDstringemptySet id; generated at the first split when empty.
writeCrcFilebooleanfalseWrite a Total Commander .crc file (raw pieces only).
writeManifestbooleanfalseWrite a .sha256 manifest.
writeJoinScriptbooleanfalseWrite .join.bat and .join.sh.
KeyTypeDefaultMeaning
sfuProgramNamestringemptyName of the app; empty means GUnite.exe. No path characters.
sfuIgnoreSizebooleantrueDo not count the app in the first piece.
sfuWelcomestringthe standard textWelcome message, with {filename}, {desc}, {size}, {fullsize} and {piececount}.
sfuMessageAtStartstringemptyMessage shown before uniting.
sfuMessageAtEndstringemptyMessage shown after uniting.
sfuAboutMessagestringthe standard textText of the About box.
sfuDestinationnumber3Where the restored file goes: 0 Windows folder, 1 System folder, 2 Temp folder, 3 Current folder, 4 Self-Uniting app folder, 5 Custom folder.
sfuCustomFolderstringemptyThe folder for destination 5.
sfuLockDestinationbooleanfalseThe recipient cannot change the destination.
sfuAskOverwritebooleantrueAsk before overwriting.
sfuOpenAfterbooleanfalseOpen the restored file afterwards.
sfuWaitForEndbooleanfalseWait for the opened program to end.
sfuDeleteAfterRunbooleanfalseDelete the restored file after the run.
sfuOpenParamsstringemptyParameters passed when the file is opened.
sfuAutoClosebooleanfalseClose when done.
sfuAutoStartbooleanfalseStart uniting without waiting.
sfuSilentbooleanfalseNo window.
sfuHeaderImagestringemptyHeader image.
sfuLanguageFilestringemptyLanguage file; empty is the language GSplit uses.

These keys are described on the pages Self-Uniting app, Self-Uniting: Operation and Self-Uniting: Language.

Import an older GSplit 3 project

GSplit 3 saved its project files as XML. The window imports them when you open one: File > Open project... detects the XML and converts it. The log lists the number of fields imported, then each key that was recognised but not applied, and each warning. Save the project to write it as a GSplit 4 file.

GSplit 3 files are ANSI text; GSplit 4 converts the accented characters of paths and titles.

Not imported:

  • The size-per-piece mode (GSplit 3 mode 2) has no GSplit 4 equivalent. It is reported as a warning.
  • The option that merged the first piece with the program, and the program icon. Both rewrote the GSplit 3 program, and GUnite.exe is shipped signed and never modified. A warning is logged when they are used.

The command line does not convert a GSplit 3 project. gsplitc -c refuses it with exit code 3.

To split several files in the window, use Split multiple files. To split several files from a script, write a GSplit 3 batch file and give it to gsplitc with -b. The window does not write batch files.

; GSplit Batch File - GSplit.exe "no" -b-i-t "[path to this file]"
[Main]
ConfigFile=
MulFiles=1
Source=
DestFolder=d:\distribution\movies
TypePieSpanned=0
SplitMethod=0
PieSize=100
PieSizeUnit=MB
Title=My new movie
Author=
Description=
PieMask=disk{num}.gsd
NoPieHeader=0
CustomHeader=0
CustomHeaderText=
LogFile=
[FileList]
0=c:\my work\my programs\program1.exe
1=c:\my work\my files\help1.chm
KeyMeaning
ConfigFileOptional GSplit 4 .gsc file, loaded first.
MulFiles1 splits the files of [FileList]; 0 splits Source.
SourceThe file to split when MulFiles is 0.
DestFolderDestination folder.
TypePieSpanned1 for disk-spanned pieces.
SplitMethod0 by size (PieSize and PieSizeUnit), 1 by number of pieces (PieNumber), 2 by pattern (Pattern, NumberOccurrences, SplitBeforePattern). PieSizes and PieSizesUnit are accepted as spelled in the GSplit 3 technote.
PieSizeUnitBytes, KB, MB or GB.
Title, Author, DescriptionPiece set metadata.
PieMaskPiece names.
NoPieHeader1 for raw pieces.
CustomHeader0 none, 1 the data before the first occurrence, 2 the text of CustomHeaderText.
LogFileThe log is written there, as -l.
[FileList]One numbered line per file. [FilesList] is accepted too.

Run it:

Terminal window
gsplitc no -b "D:\batches\movies.txt"
gsplitc no -b-i "D:\batches\movies.txt"

Without -i, the batch is only checked: every file is prepared and nothing is written. With -i, it is executed. The first word (no) is a placeholder kept from GSplit 3. It is taken as a source only when it is an existing file.

  • A batch file that is valid UTF-8 is read as UTF-8. Otherwise it is read in the Windows code page on Windows, and in Windows-1252 on Linux, so accented paths and titles survive.
  • With several files, each set goes to DestFolder\<file name without extension>\, unless the piece mask contains {orf} or {ofw}.
  • The files are split one after the other. A valid file that fails to split stops the run with exit code 4. An invalid file (exit code 1 to 3) is reported and the next one is tried. The exit code is the first non-zero one.
  • -c and -b cannot be used together.

To split a plain list of files with the same settings, you can also write a loop in your shell and call gsplitc once per file with -c project.gsc.

Create a file list by hand

GSplit.exe --file-list list.txt opens the window on the files named in a text file: UTF-8, one path per line, empty lines skipped. This is the list that the Explorer extension writes when a selection is too long for a command line. It is not a batch file: it holds paths only, no settings. See Command line: GSplit and gsplitc.

Back to top

Screenshot