Skip to content

Instantly share code, notes, and snippets.

@eladkarako
Last active April 24, 2026 19:18
Show Gist options
  • Select an option

  • Save eladkarako/0aad76e9bcf42908e0e2a09895f8691c to your computer and use it in GitHub Desktop.

Select an option

Save eladkarako/0aad76e9bcf42908e0e2a09895f8691c to your computer and use it in GitHub Desktop.
essentials - 7zip with additional codecs, curl
  • right click, save as '7za.exe'
    https://gist.github.com/user-attachments/assets/f4591de8-ffd3-4339-a00e-4e6c85fc024e
  • right click, save as 'curl.exe'
    https://gist.github.com/user-attachments/assets/ad542374-652e-4485-82e2-cb8d06426f09

powershell is available on all newer Windows OS, and you can use it to download curl.exe,

powershell.exe -NoProfile Invoke-WebRequest -MaximumRedirection 2 -Uri "https://gist.github.com/user-attachments/assets/ad542374-652e-4485-82e2-cb8d06426f09" -OutFile "curl.exe"

and use curl.exe to continue download stuff.


you can use THE 7za.exe ABOVE to unpack MOST of linux compressed files

foo.tar.gz
foo.tar.bz2
foo.tar.xz
foo.zip
foo.tar.zst

you better do it in two stages, over using windows pipeline...

7za.exe  x  foo.tar.zst
7za.exe  x  foo.tar

here is the --help of this 7za.exe

7-Zip (a) 25.01 ZS v1.5.7 R4 (x64) : Copyright (c) 1999-2025 Igor Pavlov, 2016-2026 Tino Reichardt, 2022-2026 Sergey G. Brester : 2026-01-10

Usage: 7za <command> [<switches>...] <archive_name> [<file_names>...] [@listfile]

<Commands>
  a : Add files to archive
  b : Benchmark
  d : Delete files from archive
  e : Extract files from archive (without using directory names)
  h : Calculate hash values for files
  i : Show information about supported formats
  l : List contents of archive
  rn : Rename files in archive
  t : Test integrity of archive
  u : Update files to archive
  x : eXtract files with full paths
  --version : Show version information

<Switches>
  -- : Stop switches and @listfile parsing
  -ai[r[-|0]][m[-|2]][w[-]]{@listfile|!wildcard} : Include archives
  -ax[r[-|0]][m[-|2]][w[-]]{@listfile|!wildcard} : eXclude archives
  -ao{a|s|t|u} : set Overwrite mode
  -an : disable archive_name field
  -bb[0-3] : set output log level
  -bd : disable progress indicator
  -bs{o|e|p}{0|1|2} : set output stream for output/error/progress line
  -bt : show execution time statistics
  -i[r[-|0]][m[-|2]][w[-]]{@listfile|!wildcard} : Include filenames
  -m{Parameters} : set compression Method
    -mmt[N] : set number of CPU threads
    -mx[N] : set compression level: -mx1 (fastest) ... -mx9 (ultra)
  -o{Directory} : set Output directory
  -p{Password} : set Password
  -r[-|0] : Recurse subdirectories for name search
  -sa{a|e|s} : set Archive name mode
  -scc{UTF-8|WIN|DOS} : set charset for console input/output
  -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : set charset for list files
  -scrc[CRC32|CRC64|SHA256|SHA1|XXH64|*] : set hash function for x, e, h commands
  -sdel : delete files after compression
  -seml[.] : send archive by email
  -sfx[{name}] : Create SFX archive
  -si[{name}] : read data from stdin
  -slp : set Large Pages mode
  -slt : show technical information for l (List) command
  -snh : store hard links as links
  -snl : store symbolic links as links
  -sni : store NT security information
  -sns[-] : store NTFS alternate streams
  -so : write data to stdout
  -spd : disable wildcard matching for file names
  -spe : eliminate duplication of root folder for extract command
  -spf[2] : use fully qualified file paths
  -ssc[-] : set sensitive case mode
  -sse : stop archive creating, if it can't open some input file
  -ssp : do not change Last Access Time of source files while archiving
  -ssw : compress shared files
  -stl : set archive timestamp from the most recently modified file
  -stm{HexMask} : set CPU thread affinity mask (hexadecimal number)
  -stx{Type} : exclude archive type
  -t{Type} : Set type of archive
  -u[-][p#][q#][r#][x#][y#][z#][!newArchiveName] : Update options
  -v{Size}[b|k|m|g] : Create volumes
  -w[{path}] : assign Work directory. Empty path means a temporary directory
  -x[r[-|0]][m[-|2]][w[-]]{@listfile|!wildcard} : eXclude filenames
  -y : assume Yes on all queries

jq.exe

https://github.com/jqlang/jq/releases/latest/download/jq-windows-amd64.exe

it is used to parse JSON

rename it to just jq.exe

curl.exe "https://api.github.com/repos/nanake/ffmpeg-tinderbox/releases/latest" "ffmpeg-tinderbox_releases_latest.json"
set "URL="
for /f "usebackq delims=" %%E in (`type "ffmpeg-tinderbox_releases_latest.json"  ^|  "jq.exe" -r "[.assets[] | select(.name | test(\"-win64-nonfree.tar.zst$\")) | .browser_download_url][0]"`) do (
  set "URL=%%E"
  goto EXIT_LOOP_URL
)
:EXIT_LOOP_URL
curl.exe --url "%URL%" --output "ffmpeg-win64-nonfree.tar.zst"

for example,
the code above will first query the GitHub API for the latest release,
then it will download it, overriding the given name with a simple file name.

next all you have to do is create a new folder since we're deflating the content for easier access

mkdir foo
move "ffmpeg-win64-nonfree.tar.zst" ".\foo"
move "7za.exe" ".\foo"
cd "foo"
7za.exe e "ffmpeg-win64-nonfree.tar.zst"
7za.exe e "ffmpeg-win64-nonfree.tar"

now all you have to do is extract the ffmpeg.exe, ffprobe.exe from the foo folder.
this way you don't have to look inside the folder structure which also include a versioning and sub folders..


yt-dlp

you use it to download stuff, videos mostly.

https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/latest/download/yt-dlp.exe

you need to include a lot of switches to make it usable under windows,
as well as javascript runtime to resolve various challenges.
you can export and use cookies from your browser with it.


nodejs

https://nodejs.org/download/nightly/

https://nodejs.org/download/nightly/v26.0.0-nightly20260410f1ed8d63b5/win-x64/node.exe

you "go to" javascript parser, can be used with yt-dlp,
given some scripting power user,
it is a little heavy but can do most of the previous tool quite easily, i.e. download stuff (fetch), and JSON parsing.


will be updated....

202604242218

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment