For example, let's take the command wlect dis ./path/to/*.szs ... and assume that there are 1000 tracks in the directory ./path/to/. Since the outer shell resolves pattern *.szs, all file names are written to the command line one after the other. A calculation from the ct.wiimm.de shows that the file names have an average length of 51 characters. There are also 10 characters for the path and 1 character for the separator. This means that the file names of the 1000 tracks alone require 62 000 characters on the command line. In principle, it should even be possible to process up to 4028 tracks. We ignore the additional _d variants for this calculation. For these 4028 tracks, the command line would then have to take up 250 000 characters.
That's quite a lot, but it's not a problem for Linux, which reserves at least 2 MB for the command line. In Cygwin, which is used for Windows, the limit is 32 000 characters, and in Windows 10 it is only 8192 characters. Both are not enough for our scenario.
Another problem is the use of wildcards in options. So --add-section *.gct expands to --add-section a.gct b.gct. Only the first file a.gct is considered as a parameter of the option.
For these cases, the SZS tools evaluate so-called wildcards for most commands and some options by themself. In the above examples, it would then only have to be prevented that the outer shell evaluates the wildcards. This is usually done by quoting the parameters. For the examples of above, use "./path/*.szs" or --add-section "*.gct".
You can test the expansion with commands wszst WILDCARDS and wszst EXPAND. So try for example wszst WILDCARDS "./path/to/*.szs".
The following sections describe how placeholders are resolved.
Usually wildcards of all parameters are evaluated and the matching file names are stored in a list with their real file names. This list is sorted by file paths. Duplicates are removed from the list. After adding all file names, the individual files are processed. The pipe character (|) is used to control the wildcard scanning.
For some commands and all options, the parameters are evaluated step by step. If available, the wildcards are evaluated immediately and all matching files are processed directly.
You can use the switches |+ and |- to allow or forbid (default) the search for hidden files. This options are active for the following parameters with wildcards.
If a filename beginns with a pipe character (like |filename), then wildcard and pipe character parsing is disabled. Instead filename is used exactly as specified.
For commands with sub-file support, the pipe character in the middle is used as separator between file name and sub-file name. If your file really contains a pipe character, then use 2 pipe characters in a row.
Examples: