2017-09-13 108 views
2

我的目标是通过blat删除双引号和发送.txt文件的资源作为正文邮件,我见过很多关于此问题的问题(删除双引号) ..但我无法弄清楚,我在哪里做错了。这里是我的代码批处理文件,删除双引号,但给空白.txt

set "now=%date:~4%" 
for /f %%i in ('FORFILES /D %now% /m *.csv /c "cmd /c echo @fname"') 
do @set MyVariable=%%~i > C:\temp\count.txt 
CD C:\temp\blat3217\full 
blat C:\temp\count.txt -p user -s "Incoming_File_Alert" -to [email protected] 

编辑:

这使输出空白。

编辑2:

如果我转了2号线与此FORFILES /D %now% /m *.csv /c "cmd /c echo @fname" > C:\temp\count.txt

输出是这样的

"407232_341600" 
"TW39369763_341610" 
"1726_341592" 
"407316_341601" 
"16001_341597" 
"100001317_341590" 
"407367_341602" 
"DHB11838_341593" 
"407439_341606" 
"407556_341604" 
"2373_341595" 
"ALL1020-461_341614" 
"407382_341605" 
"3598_341613" 
"PO051334_341589" 
"407537_341607" 
"407222_341598" 
"TW39369964_341611" 
"407403_341608" 
+0

这双引号?我看到三套。 – SomethingDark

+0

@ anub13,请删除您的意见,并编辑您的问题与任何额外的信息。 – Squashman

+0

'DO'必须和'FOR'在同一行。我认为你想要做的是这个。 'for/f“delims =”%% i in('FORFILES/D%now%/ m * .csv')do >> C:\ temp \ count.txt echo %%〜ni' – Squashman

回答

1

你可以给这个批处理文件一试:

@echo off 
set "SourcePath=C:\Users\user1\Documents\Work\warehouse\" 
set "now=" 
set "Ext=csv" 
Call :GetCurrentDate 
set "outputfile=C:\temp\count.txt" 
If exist "%outputfile%" Del "%outputfile%" 
CD /D "%SourcePath%" 
@for /f "delims=" %%i in ('FORFILES /D %now% /m *.%Ext%') do (
    echo %%~ni >> "%outputfile%" 
) 
If exist "%outputfile%" start "" "%outputfile%" & exit 
::******************************************************************************** 
:GetCurrentDate 
for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a 
set YYYY=%dt:~0,4% 
set MM=%dt:~4,2% 
set DD=%dt:~6,2% 
set now=%DD%/%MM%/%YYYY% 
exit /b 
::******************************************************************************** 
+0

在重定向输出之前,不需要将FOR变量设置为环境变量。也不应该需要'/ c“cmd/c echo @fname”'因为你可以在不带'FOR'变量修饰符的扩展名的情况下获得基本文件名。因此,基本代码可能看起来像这样:'for/f“delims =”%% i in('FORFILES/D%now%/ m * .csv')>> C:\ temp \ count.txt echo %%〜ni' – Squashman

+0

嗨Hackoo, 感谢您的回应,刚才运行您的建议,它不会给出输出。相反,它打开新的.txt文件,并写了 !MyVariable! – anub13

+0

@ anub13检查我最后一次编辑根据Squashman的评论 – Hackoo

0

感谢Squashman, 我的问题,他的建议得到解决..这个样子,如果有人有兴趣

CD C:\Users\user1\Documents\Work\warehouse 
set "now=%date:~4%" 
for /f "delims=" %%i in ('FORFILES /D %now% /m *.csv')do >> C:\temp\count.txt echo %%~ni 
CD C:\temp\blat3217\full 
blat C:\temp\count.txt -p user -s "Warehouse_Incoming_File_Alert" -to [email protected] 

编辑1:

敲错。

编辑2:

,如果我们不删除以前存在的.txt文件

这里是增加语法删除一个文件,这要归功于Hackoo回答以上内容复制

CD C:\Users\user1\Documents\Work\warehouse 
set "now=%date:~4%" 
set "outputfile= C:\temp\count.txt" 

If exist %outputfile% del %outputfile% 

for /f "delims=" %%i in ('FORFILES /D %now% /m *.csv') do >> %outputfile% echo %%~ni 

CD C:\temp\blat3217\full 
blat C:\temp\count.txt -p user -s "Warehouse_Incoming_File_Alert" -to [email protected]