【问题标题】:What happens at the directory level when you move a file in a Windows command shell?当您在 Windows 命令 shell 中移动文件时,目录级别会发生什么?
【发布时间】:2017-08-24 12:40:08
【问题描述】:

对于一些背景知识,我在服务器上有一个目录,随着时间的推移不断地向它传递文件。目录变得非常大,我正在将文件移出目录。我很好奇,不确定寻找答案的最佳方式,所以我想在这里问。

当我在 windows 命令 shell 中执行一个简单的移动命令时,例如 move * ..\Backlog\,会发生什么?具体来说,我的意思是,Windows 是否会在您按 Enter 键并移动这些文件时创建类似文件数组的东西?还是每次移动文件时都会重新创建文件数组?老实说,我只是想了解这在幕后是如何工作的。如果文件以稳定的速度进入目录,即使它们在您执行后进入但仍在运行,是否会被 move 命令拾取?希望我的问题有意义,谢谢。

【问题讨论】:

    标签: windows shell


    【解决方案1】:

    当您调用“移动”时,文件实际上并没有在磁盘上移动,只有目录列表(实际上是一个具有与文件名关联的一些地址的文件)被更改。

    我很确定,当您调用 move * dest 时,* 会立即得到解决,并且在那个特定时刻的所有文件都会被移动。在此过程中进入该目录的任何内容都不包含在移动中。

    【讨论】:

    • 谢谢,这正是我想知道的。你当然是对的,我忘记了搬家只是某种链接的改变,而不是真正的搬家,谢谢提醒。
    • 我不知道 CMD 在开始移动之前列出目标文件的上限是多少。我尝试移动 10,000 个文件,但没有达到限制。它首先通过NtQueryDirectoryFile 将它们全部列出,然后通过NtOpenFileNtSetInformationFile 开始打开和移动它们。
    • 另外,到“..\Backlog”的相对移动不一定是单个卷内的重新链接。 “积压”可能是已安装的卷。
    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 2020-10-20
    • 2011-02-11
    • 2012-01-30
    • 1970-01-01
    • 2015-08-31
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多