任何选项都可以将 Windows XP 默认的“此处复制”命名从“{name}.{ext} 的副本”更改为“{name}.{ext}.copy”

任何选项都可以将 Windows XP 默认的“此处复制”命名从“{name}.{ext} 的副本”更改为“{name}.{ext}.copy”

是否有一个选项或工具可以让我更改 Windows(XP)及更高版本中复制到同一目录中的文件的默认命名约定。

例如来自:备份{name}.{ext} 至:{name}.{ext}。复制

现在:

original_file.php
Copy of original_file.php

期望:

original_file.php
original_file.php.copy

这将使查找/处理重复文件很多更容易(它们一起自动排序)并且文件类型(按扩展名)发生变化,因此它不会意外地“破坏”某些东西(例如,如果它是一个 *.java 文件,在编译时我会收到错误)

答案1

如果我理解正确的话,您想在同一目录中创建文件的副本。我创建了一个 .cmd 文件来通过“发送到”菜单执行此操作。如果文件name.ext.copy已存在,它将创建:

  • name.ext.copy2
  • name.ext.copy3
  • ETC...

安装

  1. 进入Start > Run...菜单并输入“ sendto”或“ shell:sendto”。
  2. 在弹出的窗口中,创建一个新的文本文件。
  3. 在记事本中打开新文件。
  4. 粘贴下面的文本。
  5. 将文本文件重命名为“ Copy of.cmd”(带引号)。

使用

  1. 选择一个或一组文件。
  2. 右键单击文件。
  3. 选择Send To...>Copy of.cmd选项。

.cmd 的副本

for %%f in (%*) do call :try_copy %%f
goto :eof

:try_copy
if not exist "%~1.copy%2" goto :copy
call :try_next %1 %2
goto :eof

:copy
copy %1 "%~1.copy%2"
goto :eof

:try_next
if "%2" == "" ( set _next=2 ) else ( set /a _next=%2 + 1 )
call :try_copy %1 %_next%
goto :eof

答案2

所以我已经解决了:

for %%f in (%*) do call :try_copy %%f
goto :eof

:try_copy
if not exist "%~d1%~p1%~n1{copy%2}%~x1" goto :copy
call :try_next %1 %2
goto :eof
:copy
if "%2" == "" call :try_next %1 %2
copy %1 "%~d1%~p1%~n1{copy%2}%~x1"
exit

:try_next
set /a _next=%2 + 1
call :try_copy %1 %_next%
goto :eof

我猜测您发布的路径问题源于您如何创建上下文菜单条目,因为我没有遇到这个问题。

[HKEY_CLASSES_ROOT\*\shell]

[HKEY_CLASSES_ROOT\*\shell\AllF01]
 @="C&@py"

[HKEY_CLASSES_ROOT\*\shell\AllF01\command]
 @="C:\\AEdNs\\nCodIP\\nCodIU\\Copy.cmd \"%1\""

我不使用 MS Windows Explorer。我使用各种便携式/免费文件管理器。

所有(除了一个)都存在这样的问题:原始脚本会将文件复制到免费软件文件管理器的根“安装”目录中,因此我添加了将%~d1%~p1原始文件的驱动器\路径放在输出文件上的脚本...

我出于各种原因以各种方式调整了代码,并通过 XP 上下文菜单(而不是 SendTo)在任何选定的文件上启动代码。

相关内容