问题标签 [movefileex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1070 浏览

windows - MoveFileEx() 返回 ERROR_SHARING_VIOLATION

我正在开发一个可以对我们的主程序的模块进行实时更新的程序。

如果主 exe 正在运行,则需要

1)将其重命名为临时名称,例如:%productpath%\main.exe -> %productpath%\temp\temp.exe
::MoveFileEx(%productpath%\main.exe, %productpath%\temp\temp.exe, MOVEFILE_REPLACE_EXISTING)---GetLastError()返回ERROR_SHARING_VIOLATION

2)删除临时文件,直到重新启动
::MoveFileEx(%productpath%\temp\temp.exe, NULL, MOVEFILE_DELAY_UNTIL_REBOOT);

3)将新下载的exe复制到原始路径%productpath%\main.exe

我的问题是为什么它在第一步失败,因为exe正在运行而MoveFileEx()返回?ERROR_SHARING_VIOLATION

我的更新程序具有管理员权限。

0 投票
1 回答
430 浏览

vba - 如何使用 VBA 打开文本文件并将它们移动到文件夹中?

我需要一个项目的帮助,在该项目中我必须打开一个文本文件列表,在其内容中找到一个模式,然后根据模式移动到其他文件夹。

例如,在一个文本文件列表中,我必须找出其中的哪些里面写有“blue”这个词,然后它们只将这些文件移动到另一个名为“Blue”的文件夹中。

我试图使用命令 FileSystemObject 来完成它,但我有点迷失了。

非常感谢提前!!

0 投票
1 回答
84 浏览

excel - 在 VBA 中重定位动态文件

我试图让用户选择一个文件并选择一个上传到另一个位置(如共享驱动器)。我正在使用名称功能,但我意识到我无法获取文件名并将其放入“toPath”,因为它取决于用户。以下是我完成的代码,请任何建议或建议都会有所帮助。

同时,我希望我的代码可以帮助正在尝试做同样事情的人。谢谢

选择要上传的文件:

要选择上传文件的上传路径:

0 投票
0 回答
113 浏览

unix - 使用 Win32 MoveFileEx() 为目录模拟 UNIX rename()

我想模拟一个特定的 UNIXrename()函数来重命名目录。它的 MAN 页指定:

oldpath 可以指定一个目录。在这种情况下,newpath 必须不存在,或者必须指定一个空目录。

我想模拟最后一种情况:

newpath 存在并且为空。

所以我创建了目录foo_dirbar_dir调用MoveFileEx()了以重命名foo_dirbar_dir. 这是没有错误管理的代码:

MoveFileEx()总是失败并出现错误 5(拒绝访问)。我尝试过使用其他标志MoveFileEx()但没有成功。

bar_dir如果它存在并且在调用之前为空,我必须手动删除MoveFileEx()吗?还是有其他解决方案?

我还没试过ReplaceFile()

0 投票
0 回答
708 浏览

visual-c++ - 带有 MOVEFILE_REPLACE_EXISTING 标志的 MoveFileEx 失败,LastError = 183

我们有一个应用程序,它通过使用以下命令将配置文件复制到子文件夹(请参阅下面的日志文件条目)来备份配置文件:-

这似乎在大多数系统上按预期工作,但在两个系统上,我们在日志文件中收到以下警告:-

2018 年 6 月 11 日 10:58:05.437 W. 常见警告 MoveFile 在 C:\Program Files\Configuration\Stores.xml 到 C:\Program Files\Configuration\Backup\Stores.xml 上失​​败 LastError=183

Lasterror =183意思是“ ERROR_ALREADY_EXISTS

这很奇怪,因为MOVEFILE_REPLACE_EXISTING它专门用于在目标文件存在时启用此命令。

这发生在Win7 x86机器上。

在以前的版本中MoveFile使用了代码,但DeleteFile在确保目标文件不存在之前立即调用。当代码回滚到这个版本时,它就可以工作了。

有什么建议么?

0 投票
1 回答
20 浏览

visual-studio-2013 - VS2013项目设置导致文件移动访问被拒绝(也许?)

我在使用 Windows API 将文件从一个位置移动到另一个位置的应用程序时遇到问题。问题不在于代码,它似乎是项目设置,但我不知道要查找什么或在哪里。

我创建了一个项目,编写了大量代码,然后开始实现移动位。在测试中,我不断收到“拒绝访问”的结果。经过大量挠头后,我创建了一个新项目来对移动代码进行单元测试。它工作得很好。我将已知的工作代码批发复制到原始项目中,删除其他所有内容并重新运行。拒绝访问。因此,两个项目之间的唯一区别在于项目设置中的内容。我还检查了资源管理器中两个 exe 文件的安全设置。两者都与我作为所有者相同。

请任何人都可以建议我需要在设置中检查/更改什么?我不想费力尝试手动比较这两个项目设置。

非常感谢。

对于任何感兴趣的人,我正在运行的代码是:

0 投票
1 回答
526 浏览

c++ - Windows C++:文件夹移动访问被拒绝错误

下面的代码是我项目中的一个片段,其中包括:

  1. 从指定的本地文件夹(上传文件夹)获取文件夹内容的集合
  2. 将包含的文件复制到远程网络文件夹。如果有子文件夹,则复制其文件,但不保留文件夹结构。
  3. 将原始本地文件夹移动到不同的本地位置(存档文件夹)

我遇到的麻烦是在移动操作中。如果要移动的文件夹包含一个或多个子文件夹,则移动将失败并显示“拒绝访问”错误。我已将原因缩小到先前的函数调用,该函数调用生成要复制的文件列表。我在下面的代码中突出显示了这个调用。它在 main 中(参见第一次调用 getFolderItemsRecursive())。我不明白为什么这个递归函数会产生问题。就好像通过收集信息,它以某种方式将某些东西标记为“正在使用”。请注意,我实际上并没有复制文件,因为我已经注释掉了这些行。所以不是这样。

要运行下面的代码,您需要在某处创建几个文件夹并将位置输入到代码中。代码假定 c:_UploadTests 和 c:_archivedtests。要重现该问题,请在 _UploadTest 中创建至少一个带有自己的子文件夹的子文件夹。例如 c:_UploadTests\Foo\Bar\

0 投票
0 回答
140 浏览

delphi - 重新启动后 MoveFileEx 不删除文件

有人可以解释为什么MoveFileEx在以下代码中重新启动后不删除文件?谢谢。