Windows命令行工具汇总

2025-10-22 18:27:00
丁国栋
原创 46
摘要:本文记录和汇总一些Windows平台下的命令行工具。

windows有什么命令行工具可以代替rsync?

在 Windows 系统中,虽然没有原生的 rsync,但可以通过以下命令行工具实现类似功能:


1. Robocopy(内置工具,推荐)

Windows 自带的强大文件复制工具,支持增量同步、断点续传、镜像同步等。

robocopy 源目录 目标目录 /MIR /COPYALL /R:1 /W:1 /MT:16
  • /MIR:镜像模式(完全同步,删除目标中多余文件)
  • /COPYALL:复制所有文件属性(包括权限、时间戳等)。注意:如果使用这个选项,需要有管理员权限。
  • /MT:16:多线程加速(16线程)
  • /R:1 /W:1:失败重试次数和等待时间(减少卡顿)

2. cwRsync(Windows 版 Rsync)

基于 Cygwin 的 Rsync 移植版本,支持原生 Rsync 协议。


3. DeltaCopy(Rsync 的 GUI + 服务端)

提供图形界面和后台服务,简化 Rsync 使用。


4. PowerShell 脚本

用 PowerShell 实现简单同步逻辑(适合轻量需求):

# 增量同步(仅复制新文件)
Copy-Item -Path "C:\源目录\*" -Destination "D:\目标目录\" -Recurse -Force

5. FreeFileSync(GUI + 命令行)

支持生成命令行批处理脚本的图形化工具。


6. Git Bash + Rsync

如果已安装 Git for Windows,可通过 Git Bash 使用原生 Rsync:

rsync -avz --delete /c/源目录/ user@remote:/目标目录/

选择建议

  • 优先内置工具:用 Robocopy(无需安装,性能好)。
  • 需要跨平台同步:用 cwRsyncGit Bash + Rsync
  • 图形化需求FreeFileSyncDeltaCopy

注意:若需要 实时同步,可搭配 Robocopy + 计划任务或第三方工具(如 Syncthing)。

linux 下的 inotify 工具在Windows 下有替代的命令行工具么?

在 Windows 下,没有直接等同于 Linux inotify 的内置工具,但可以通过以下命令行工具或方案实现类似的文件/目录监控功能:


1. PowerShell 的 FileSystemWatcher

通过 PowerShell 脚本监听文件系统事件(创建、修改、删除等),适合脚本化需求。

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\监控目录"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
Register-ObjectEvent $watcher "Created" -Action {
    Write-Host "文件创建: $($EventArgs.FullPath)"
}
Register-ObjectEvent $watcher "Deleted" -Action {
    Write-Host "文件删除: $($EventArgs.FullPath)"
}
# 保持脚本运行
while ($true) { Start-Sleep -Seconds 1 }

优点:无需安装,灵活定制。 缺点:需手动处理事件逻辑。


2. Windows 内置工具 fsutil

检查文件更改(需轮询,非实时):

fsutil file queryfilename C:\监控目录\test.txt

缺点:仅支持单个文件,无目录监控。


3. 第三方工具推荐

a. choco install 安装的工具

  • inotify-win(类 Unix 的 inotifywait) 通过 Chocolatey 安装:

    choco install inotify-win

    示例(监控目录):

    inotifywait.exe C:\监控目录 -r -m -e create,delete,modify
  • Watchman(Facebook 开源的多平台监控工具) 官网:https://facebook.github.io/watchman/

b. WSL 中使用原生 inotify

若已启用 WSL(Windows Subsystem for Linux),可直接在 Linux 子系统中使用:

inotifywait -r -m /mnt/c/监控目录 -e create,delete,modify

4. 专业工具(带命令行支持)

  • Process Monitor(ProcMon) Sysinternals 工具之一,可监控文件/注册表/进程活动,支持命令行过滤:

    Procmon.exe /AcceptEula /Minimized /Filter "Operation is WriteFile"

    官网:https://docs.microsoft.com/en-us/sysinternals/downloads/procmon

  • Directory Monitor 支持实时监控并触发命令:

    DirMon.exe -d "C:\监控目录" -s -c "echo 文件已修改"

5. 编程接口调用

通过 C#/Python 等调用 Windows API(如 ReadDirectoryChangesW),适合开发场景:

# Python 示例(使用 watchdog 库)
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class Handler(FileSystemEventHandler):
    def on_modified(self, event):
        print(f"文件修改: {event.src_path}")
observer = Observer()
observer.schedule(Handler(), path="C:\\监控目录", recursive=True)
observer.start()
observer.join()

选择建议

  • 快速脚本监控:PowerShell FileSystemWatcher
  • 跨平台兼容:WSL 原生 inotifywaitWatchman
  • 专业需求Process Monitor 或第三方工具(如 inotify-win)。
  • 开发集成:直接调用 Windows API 或使用 Python 库(如 watchdog)。

注意:Windows 原生缺乏类似 inotify 的轻量级工具,多数方案需依赖轮询或第三方组件。

发表评论
博客分类