首页 > 解决方案 > 如何在保持整个文件名的同时拖放到 .BAT 上?

问题描述

我创建了一个小蝙蝠,它获取文件夹和/或文件并将结果存储在临时文件中。但我很快发现,当尝试使用 ! 删除文件时,! 将结果放入临时文件时丢失。我还尝试添加标记并覆盖默认分隔符,但也没有这样做。有任何想法吗?

::Drag and drop Folder(s) or File(s) stores results in temp txt file
For %%I in (%*) do (
set Drag_Drop_Var!n!=%%I
echo !Drag_Drop_Var0!>>temp123456789.txt

因此,禁用延迟扩展可以保留 ! 但他们是我需要启用它的情况,我会失去!

SET /A Num_lines_b=1 
FOR /F "tokens=*" %%I IN ('type "%cd%%Hash_Database%"') DO ( 
SET Var_from_hash_database!Num_lines_b!=%%I 
SET /a Num_lines_b+=1 
) 

如您所见,延迟扩展禁用!Num_lines_b!变量将为空。

SET /A Num_lines_b=1 
FOR /F "tokens=*" %%I IN ('type "%cd%%Hash_Database%"') DO ( 
CALL SET Var_from_hash_database%Num_lines_b%=%%I 
CALL SET /a Num_lines_b+=1 
) 

我能够通过禁用延迟扩展并在 FOR 循环中调用设置变量来解决问题。感谢您的所有帮助。

标签: loopsbatch-file

解决方案


尝试

echo off 
for %%f in (%1\*.*) do echo %%f>>temp123456789.txt
pause

我试过了!在文件名中,并且它们没有在输出文件中丢失。


推荐阅读