🌀 Windows utilities when working with the file system. Intended for use with electron or nodejs.
npm install windows-fs
import { mount, statByDriveLetter } from 'windows-fs'
mount('server', 'share')
.then(letter => statByDriveLetter(letter))
.then(log)
// -> { freeSpace: 10700152832, size: 53579083776 }
Note that all paths are written in unix style format to ease the developer pain from double escaping the backslash in windows. All other path characteristics stay the same (
a:/
,//server
).
Checks if a given unc
path is already mounted. If it's mounted returns
the drive letter otherwise returns undefined.
Parameters
unc
String Unc like pathserver/share$
Examples
isMounted('server/share$')
.then((letter) => {
// mounted network drive hasn't been found
if (!letter) return
// found
})
Returns (String|undefined) The drive letter or if not found undefined
Mounts a network drive to the next available drive letter and returns a the drive letter which it was mounted on.
Parameters
unc
String A UNC path like//server
path
String A path likesome/path/to/folder
credentials
Object=user
andpassword
to log into a network
Examples
// (given letter Y: is free)
mount('server', 'c$')
.then(log)
.catch((err) => console.error('failed to mount', err))
// -> Y:
Returns Promise Resolves to the drive letter which the path was mounted on, rejects when the command fails
Gets a list of mounted drive letters and their respective unc paths.
Returns Array Array of { unc, letter } tuples
Gets stats by a given drive letter
like the current size of the hdd etc.
This also works for drives in a network. Use statDrives()
when their are
no login credentials, otherwise use this function to avoid firewall
settings.
Parameters
letter
String The drive letter which the hdd was mounted on
Examples
statByDriveLetter('Z:')
// -> { freeSpace: 10700152832, size: 53579083776 }
Returns Promise A promise which resolves to { freeSpace, size }
Gets various metadata about the directory and the files in it using a recursive walk.
Parameters
path
String Absolute path
Examples
statDirectory('c:/temp/log')
// -> { count: 4, size: 32636 }
Returns Object Object with size
(directory size in bytes),
count
(file count) and files
(list of files in the directory and their
respective metadata)
Gets various information about all the drives mounted on a given
computer
Parameters
computer
String Computer name
Examples
statDrives('computer-name').then(log)
// -> [{ deviceID: 'C:', freeSpace: 4324564, ...}, ...]
Returns Promise Resolves to { json, stdout, stderr }
Creates a windows path given a server
name and a unix path
.
Parameters
Examples
toUncPath('server', 'some/path/to/a/log')
// -> `\\server\some\path\to\a\log`
Replaces /
with \
so we can use an unix path and convert it to a
windows path.
Parameters
path
String Unix style path
Examples
toWindowsPath('some/random/folder')
// -> some\random\folder
Returns String Windows style path
Unmounts a network drive given a letter
and returns the letter
.
Parameters
letter
String Network drive letter
Examples
// (given letter Z: is mounted)
unmount('Z:')
.then(log)
.catch((err) => console.error('failed to unmount', err))
// -> Z:
Returns Promise Resolves to the drive letter when successful, rejects when the command fails
There is an extensive test suite which is not generalized for public tests because its not independent of the system it's running on. We haven't found a way to get around that for windows-like utilities.
npm test