With drive letters, a neat functionality in DOS/Windows command prompts (don't ask me about Powershell) is that each letter can have its own "current directory".
So if you have ffmpeg.exe in C:\Program Files\FFMpeg\bin, and you have some source files in D:\SourceVideos, and you want to process them in ffmpeg and output them to E:\Output you can do:
C: (to navigate to the C: drive)
cd "C:\Program Files\FFMpeg\bin"
E: (to navigate to the E:\ drive)
cd D:\SourceVideos (you remain in E:\, but the "current directory" for D: has been changed).
cd Output (to enter E:\Output)
You can now do C:ffmpeg.exe -i D:scene1.mp4 output-scene1.mp4
and Windows accesses the files in the "current" directory on each drive letter.
A neat functionality in bash and other common Unix based shells is that you can have variables. So you can do:
(navigate to one directory)
src=$PWD
(navigate to another directory)
dst=$PWD
(navigate wherever you like)
You can now do: ffmpeg -i "$src/scene1.mp4" "$dst/output-scene.mp4"
If you avoid spaces and other special characters in directory and file names, then you can skip the quotes.
This is conveniently not limited to a system wide partitioning scheme.
There is also “subst” (https://en.wikipedia.org/wiki/SUBST)
It allow you to pretend a directory is a drive, and thus gives you multiple current directories on a drive.
I produced a fork of the Cygwin DLL in which the POSIX chdir() provides this same feature: the "currently logged drive" and per-drive current directory.
https://www.kylheku.com/cygnal/
It's behind quite a bit; haven't done a rebase in a while.
This is just one of the features (Issue 7); the idea is to provide a POSIX run-time for easily porting programs to Windows, but follow the conventions of the Windows environment.
Yes officer, This post right here.
> You can now do C:ffmpeg.exe -i D:scene1.mp4 output-scene1.mp4
This won't actually work because multiple current directories are a fiction of cmd.exe
An interesting quirk of how this works: https://devblogs.microsoft.com/oldnewthing/20100506-00/?p=14...
>With drive letters, a neat functionality in DOS/Windows command prompts (don't ask me about Powershell) is that each letter can have its own "current directory".
I remember that NT4 did not have "current directory" context for each process. But but apparently[1] windows 2000 had it already. So what you write above is per process and not per logged in user right?
Asking, because I remember that Citrix which did Terminal Server 4.0 for NT4 had to license windows source code to be enable to make changes for their product at least somehow working with NT4. Up till that time Winddows did not keep current directory per process or at least user, but it was a global state.
So if you changed with "cd" current directory it changed for all processes which was a big issue for Citrox as they did look a way to make Windows a server class system, where each user had distinct environments with distinct default directories etc.
For me as I heard that then I did not understand what was Microsoft thinking letting still with NT such misfeatures remain shipped product and especially when they had real talent Dave Cutler been working on it.
I haven't been using windows besides using Visio a separate local VM since turn of century. So is Windows been since 2000 etc. a real multitasking multiuser system or does it still suffer such handicaps it had at least before?
[1] Microsoft licensed Citrix made changes and RDP protocol they had developed, then brought Server 2000 with terminal server product to compete with Citrix Terminal Server.
is this cmd or does it also work with pwsh / Powershell?
[dead]
I barfed a bit in my mouth
So you can be at A, run a successful absolute path cd, then do something bad like a bulk remove in the current directory, and you nuke A?
What a footgun.
I don't think that's good, I think that's horrible, got to hate invisible state.