当我想回显一个包含变量的命令时,会在它们之间添加空格并且我的命令不起作用:/
代码:
@echo on
chcp 65001 > nul
if exist Sauvegarde.bat del Sauvegarde.bat
set /p path=Donner le chemin du dossier à sauvegarder (dossier compris):
set /p hote=Donner l'hôte(ou ip) du serveur FTP :
set /p utilisateur=Donner l'utilisateur :
set /p mdp=Donner le mot de passe :
echo @echo on > Sauvegarde.bat
set path=%path% >> Sauvegarde.bat
set hote=%hote% >> Sauvegarde.bat
set utilisateur=%utilisateur% >> Sauvegarde.bat
set mdp=%mdp% >> Sauvegarde.bat
echo :menu >> Sauvegarde.bat
echo echo "/------------------------------\" >> Sauvegarde.bat
echo echo "| 1-Sauvegarde |" >> Sauvegarde.bat
echo echo "| 2-Activer Sauvegarde Auto |" >> Sauvegarde.bat
echo echo "| 3-Recommencer la config |" >> Sauvegarde.bat
echo echo "| 4-Fermer |" >> Sauvegarde.bat
echo echo "\------------------------------/" >> Sauvegarde.bat
echo set /p choix=Entrer un choix : >> Sauvegarde.bat
echo if %%choix%% == 1 GOTO sauvegarder >> Sauvegarde.bat
echo if %%choix%% == 2 GOTO autosauvegarde >> Sauvegarde.bat
echo if %%choix%% == 3 GOTO recommencer >> Sauvegarde.bat
echo if %%choix%% == 4 GOTO quitter >> Sauvegarde.bat
echo echo Entrer un chiffre entre 1 et 4 !!! >> Sauvegarde.bat
echo goto menu >> Sauvegarde.bat
echo :sauvegarder >> Sauvegarde.bat
echo set filename=Sauvegarde_%%date:~-4,4%%-%%date:~-7,2%%-%%date:~10,2%%.zip >> Sauvegarde.bat
echo .\lib\zip.exe -r -u %%filename%% test >> Sauvegarde.bat
echo .\lib\winscp.com /command "open ftp://%utilisateur%:%mdp%@%hote%" "put %filename%" /log="script.log">> Sauvegarde.bat
pause
start Sauvegarde.bat
pause
这条线是关注的:
echo .\lib\winscp.com /command "open ftp://%utilisateur:%mdp@%hote" "put %filename%" /log="script.log">> Sauvegarde.bat
输出带有以下空格: X是隐藏我的登录信息
.\lib\winscp.com /command "open ftp://XXXXXXXX :XXXXXXXXX @XXX.XXX.XXX.XXX " "put " /log="script.log"
答案 0 :(得分:2)
filename
未设置,可能是
echo set filename=...
应该没有echo
和重定向,应该移到echo @echo on > Sauvegarde.bat
行之前。
你有很多行,比如
set utilisateur=%utilisateur% >> Sauvegarde.bat
这样做似乎不合逻辑 - 也许你的意思是ECHO set...
此外,你在行的末尾有一些可变数量的空格 - 这可能是累积的杂散空间的来源。您的运行报告似乎是由此批次创建的批次创建的。
这也是语法
的原因set "var=value"
使用了 - 无论行上的空格如何,该值都将分配给var
。
你知道吗
(
echo this
echo that
echo something else
)>filename
会创建一个新文件filename
,其中包含累积的echo
es?
答案 1 :(得分:0)
向您展示echo
,使用choice
并修复其他一些内容的示例:
@Echo Off
Rem ChCp 65001 > Nul
Set /P "pth=Donner le chemin du dossier … sauvegarder (dossier compris): "
Set /P "hote=Donner l'h“te(ou ip) du serveur FTP: "
Set /P "utilisateur=Donner l'utilisateur: "
Set /P "mdp=Donner le mot de passe: "
( Echo @Echo Off
Echo :menu
Echo Echo "/------------------------------\"
Echo Echo "| 1-Sauvegarde |"
Echo Echo "| 2-Activer Sauvegarde Auto |"
Echo Echo "| 3-Recommencer la config |"
Echo Echo "| 4-Fermer |"
Echo Echo "\------------------------------/"
Echo Choice /C 1234 /M "Entrer un choix"
Echo If ErrorLevel 4 GoTo quitter
Echo If ErrorLevel 3 GoTo recommencer
Echo If ErrorLevel 2 GoTo autosauvegarde
Echo :sauvegarder
Echo Set "filename=Sauvegarde_%%date:~-4,4%%-%%date:~-7,2%%-%%date:~-10,2%%.zip"
Echo .\lib\zip.exe -r -u %%filename%% test
Echo .\lib\winscp.com /command "open ftp://%%utilisateur%%:%%mdp%%@%%hote%%" "put %%filename%%" /log="script.log"
) > "Sauvegarde.bat"
Pause
Call "Sauvegarde.bat"
Pause
我Rem
确定了第二行,我认为没有必要,你可以另外决定,并删除那些不再需要的行。
请记住,您需要完成菜单项的其他标签
注意强>
在3
行和4
行,您会发现有些字符与问题脚本中的字符不同。它们是直接从我的cmd.exe
输出粘贴字符的结果。如果这些字符在您的测试中无法正常呈现,请随时根据需要将…
替换为à
,将“
替换为ô
。