【发布时间】:2020-12-08 18:25:29
【问题描述】:
我每周都会创建很多硬链接。当需要清理它们时,我发现自己使用 ln (https://schinagl.priv.at/nt/ln/ln.html) 的“DeleteAllHardlinks.bat”,但我必须一个接一个地拖放每个文件。
我很想找到一种方法来选择 100 个文件并将它们放到 .bat 中,稍等片刻,然后找到所有这些文件和硬链接都已永久删除。无论如何要更改 .bat 文件以允许这样做吗? (或者可能有任何其他不同的方法来完成同样的事情?)
@echo off
REM
REM Check for commandline args
REM
if "[%~1]" == "[]" goto error
set LN=ln.exe
REM
REM List hardlink sibblings and delete all siblings
REM
for /f "delims=" %%a in ('@%LN% --list "%~1"') do (
del /f "%%a"
)
goto ausmausraus
:error
echo DeleteAllHardlinks: Argument is missing. Usage DeleteAllHardlinks ^<filename^>
echo e.g. DeleteAllHardlinks c:\data\myfile.txt
:ausmausraus
echo on
提前致谢!
【问题讨论】:
-
@keiju
ln.exe不是在命令提示符窗口或引用的 Microsoft 文档页面中运行help时的标准 Windows command 输出。它也未列在SS64.com - A-Z index of Windows CMD commands 上,它具有所有 Windows 命令的最佳文档,包括 mklink 以创建目录符号链接、硬链接或目录连接。 -
@keiju
dir /AL可用于列出dir /?描述的目录中的所有目录符号链接和目录连接。但是,可以很容易地修改批处理文件,以不仅支持第一个参数,还支持通过使用更多for循环和%*传递给批处理文件的所有文件名参数字符串,正如call /?所解释的那样,即@987654333 @ 替换现有的for循环。但是启动 bat 的应用程序必须传递用双引号括起来的每个文件名才能正常工作。
标签: batch-file window delete-file hardlink ln