是否有一个选项或工具可以让我更改 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...
安装
- 进入
Start > Run...
菜单并输入“sendto
”或“shell:sendto
”。 - 在弹出的窗口中,创建一个新的文本文件。
- 在记事本中打开新文件。
- 粘贴下面的文本。
- 将文本文件重命名为“
Copy of.cmd
”(带引号)。
使用
- 选择一个或一组文件。
- 右键单击文件。
- 选择
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)在任何选定的文件上启动代码。