2017-09-13 9 views
2

Mon but est de supprimer le guillemet et d'envoyer la ressource du fichier .txt comme corps du message via blat, j'ai vu beaucoup de questions à ce sujet (suppression des guillemets) .. mais je ne peux pas comprendre, où je fais mal. Voici mon codeFichier batch, supprimer le guillemet mais donner le blanc .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] 

EDIT:

Ce vide donne de sortie.

EDIT 2:

si je passe sur le numéro de la ligne 2 avec ce FORFILES /D %now% /m *.csv /c "cmd /c echo @fname" > C:\temp\count.txt

La sortie est comme ce

"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

Quels guillemets doubles ? Je vois trois ensembles. – SomethingDark

+0

@ anub13, s'il vous plaît supprimer vos commentaires et modifier votre question avec toute information supplémentaire que vous avez. – Squashman

+0

Le DO doit être sur la même ligne que le FOR. Je pense que ce que vous essayez de faire est ceci. 'pour/f" delims = "%% i dans ('FORFILES/D% maintenant%/m * .csv') faire >> C: \ temp \ count.txt echo %% ~ ni' – Squashman

Répondre

1

Vous pouvez faire un essai pour ce fichier batch :

@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

Ne devrait pas avoir besoin de définir la variable FOR à une variable d'environnement avant de rediriger la sortie. Il ne devrait pas non plus avoir besoin de '/ c" cmd/c echo @fname "' car vous pouvez obtenir le nom du fichier de base sans l'extension avec le modificateur de variable 'FOR'. Ainsi, le code de base pourrait ressembler à ceci: 'pour/f" delims = "%% i in ('FORFILES/D% maintenant%/m * .csv') font >> C: \ temp \ count.txt echo %% ~ ni' – Squashman

+0

Salut Hackoo, Merci de répondre, maintenant en cours d'exécution votre suggestion, il ne donne pas de sortie du tout. Au lieu de cela, son nouveau fichier .txt d'ouverture et a écrit ! MyVariable! – anub13

+0

@ anub13 Vérifiez ma dernière modification basée sur le commentaire de Squashman – Hackoo

0

Merci à Squashman, mon problème résolu avec sa suggestion .. ressemblait à ceci, si quelqu'un intéressé

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] 

EDIT 1:

mistype.

EDIT 2:

Au-dessus dédouble si nous ne supprimons pas ici le fichier txt existant précédent

est l'ajout de la syntaxe supprimer le fichier précédent, grâce à Hackoo réponse

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]