Batch file 通过将文件名拖动到bat文件中来删除文件名

Batch file 通过将文件名拖动到bat文件中来删除文件名,batch-file,find,Batch File,Find,我想使用拖放功能从txt列表中删除一个文件名,但是我无法让代码正常工作 :delete setlocal enableDelayedExpansion set /p dnr=%1 find /v "!dnr!" document.txt > deleted.txt pause 这将从文本文件(假定名称和扩展名格式)中删除拖放到其中的文件。如果是完整路径格式,则将%%~nxa更改为%%a :delete setlocal enabledelayedexpansion for /f "tok

我想使用拖放功能从txt列表中删除一个文件名,但是我无法让代码正常工作

:delete
setlocal enableDelayedExpansion
set /p dnr=%1
find /v "!dnr!" document.txt > deleted.txt
pause

这将从文本文件(假定名称和扩展名格式)中删除拖放到其中的文件。如果是完整路径格式,则将
%%~nxa
更改为
%%a

:delete
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ("%1") do (
set dnr=%%~nxa
find /v "!dnr!" filenames.txt >deleted.txt 
)    
for /f "skip=2 tokens=* delims=" %%x in (deleted.txt) do echo %%x >>new.txt
del deleted.txt /f /q
ren new.txt deleted.txt

这可以很好地工作,但是删除的.txt文本文件有一个恼人的地方------C:\FILENAMES.txt在开始的时候,有什么方法可以抑制它或者消除它吗?我已经更新了我的答案来消除它。这只是额外的3行,如果他们有一个
find
开关,但不包括它,那就更好了!实际上是在你的另一篇关于堆栈溢出的帖子上