Batch file 如何删除windows 10上多个文件的所有硬链接?

Batch file 如何删除windows 10上多个文件的所有硬链接?,batch-file,window,delete-file,hardlink,ln,Batch File,Window,Delete File,Hardlink,Ln,我每周都会创建很多硬链接。当需要清理它们时,我发现自己在使用ln()的“DeleteAllHardlinks.bat”,但我必须一个接一个地拖放每个文件 我很想找到一种方法,只选择100个文件,把它们放在.bat上,等一下,发现所有这些文件和硬链接都被永久删除了。是否要更改.bat文件以允许此操作?(或者可能有其他不同的方法来完成相同的任务?) @echo关闭 雷姆 命令行参数的REM检查 雷姆 如果“[%~1]”=“[]”转到错误 设置LN=LN.exe 雷姆 REM列出硬链接同级并删除所有同

我每周都会创建很多硬链接。当需要清理它们时,我发现自己在使用ln()的“DeleteAllHardlinks.bat”,但我必须一个接一个地拖放每个文件

我很想找到一种方法,只选择100个文件,把它们放在.bat上,等一下,发现所有这些文件和硬链接都被永久删除了。是否要更改.bat文件以允许此操作?(或者可能有其他不同的方法来完成相同的任务?)

@echo关闭
雷姆
命令行参数的REM检查
雷姆
如果“[%~1]”=“[]”转到错误
设置LN=LN.exe
雷姆
REM列出硬链接同级并删除所有同级
雷姆
对于/f“delims=“%%a in('@%LN%--list“%~1”)do(
删除/删除“%%a”
)
去奥斯马斯罗斯酒店
:错误
echo DeleteAllHardlinks:缺少参数。使用DeleteAllHardlinks^
echo,例如删除所有硬链接c:\data\myfile.txt
:ausmausraus
呼应
提前谢谢

非常感谢Mofi

可以很容易地修改批处理文件,使其不仅支持第一个参数,而且支持通过使用另一个
for
循环和
%*
传递到批处理文件的所有文件名参数字符串,如
调用/?
所述,即用作现有
for
循环的替换:

for %%I in (%*) do for /F "delims=" %%J in ('ln.exe --list "%%~I" 2^>nul') do del /F "%%~J"
但是启动批处理文件的应用程序必须传递包含在双引号中的每个文件名才能正常工作


仅使用注释中提供的
for
就完美地解决了问题。

@keiju
ln.exe
不是在命令提示窗口或引用的Microsoft文档页面中运行
帮助时的标准输出。对于所有Windows命令(包括创建目录符号链接、硬链接或目录连接),它也没有列出最佳文档。@keiju
dir/AL
可用于列出目录中的所有目录符号链接和目录连接,如
dir/?
所述。但是,可以很容易地修改批处理文件,使其不仅支持第一个参数,而且支持传递给批处理文件的所有文件名参数字符串,方法是使用另一个
for
循环和
%*
,如
调用/?
所述,即
for%%i in(%%*)do for/F“delims=“%%J in('ln exe--list”%%i“2^>num do del F”%%~J”
替换现有的
for
循环。但启动bat的应用程序必须传递包含在双引号中的每个文件名才能正常工作。
for %%I in (%*) do for /F "delims=" %%J in ('ln.exe --list "%%~I" 2^>nul') do del /F "%%~J"