把书读薄了
技术求助区
级别: 霏凡版主

UID: 32760
精华: 0
发帖: 10170
威望: 12597
霏币: 116136.9
活跃度: 10493
技术分: 0
交易值: 0
在线时间: 7333(小时)
注册时间: 2004-08-31
最后登录: 2020-10-20
楼主  发表于: 2020-06-26 16:08:09

【应用求助】 如何让批处理隐藏运行

以下是批处理文件:

@echo off
rem 指定FTP用户名
set ftpUser=FTPUSERNAME
rem 指定FTP密码
set ftpPass=FTPPASSWORD
rem 指定FTP服务器地址
set ftpIP=192.168.0.2
rem 指定待下载的文件位于FTP服务器的哪个目录
set ftpFolder=/SharedFile/Log
rem 指定从FTP下载下来的文件存放到本机哪个目录
set LocalFolder=C:\temp

for /f %%i in ('powershell -c "Get-Date (Get-Date).AddDays(-1) -uformat "%%Y%%m%%d""') do (
    set "DstDate=%%i"
)

set ftpFile=%temp%\TempFTP.txt
>"%ftpFile%" (
    echo,%ftpUser%
    echo,%ftpPass%
    echo cd "%ftpFolder%"
    echo lcd "%LocalFolder%"
    echo bin
    echo get backup%DstDate%.rar
    echo bye
)
start ftp -v -i -s:"%ftpFile%" %ftpIP%
级别: 霏凡贵宾

UID: 25279
精华: 0
发帖: 6312
威望: 8416
霏币: 14350.2
活跃度: 6777
技术分: 48
交易值: 0
在线时间: 4671(小时)
注册时间: 2004-08-16
最后登录: 2020-10-20
1楼  发表于: 2020-06-27 18:06:17
在批处理的最前头加上下面这两行就可以了:

@echo off
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit

(下面是你自己的代码)


值得注意的是,一旦隐藏运行了就没办法接收用户的键盘输入
在这个幻象的世界中,做梦者内在的意识是唯一的真实。
把书读薄了
技术求助区
级别: 霏凡版主

UID: 32760
精华: 0
发帖: 10170
威望: 12597
霏币: 116136.9
活跃度: 10493
技术分: 0
交易值: 0
在线时间: 7333(小时)
注册时间: 2004-08-31
最后登录: 2020-10-20
2楼  发表于: 2020-06-28 10:41:46
引用
引用第1楼朴の子于2020-06-27 18:06发表的  :
在批处理的最前头加上下面这两行就可以了:

@echo off
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit

.......

测试了,没用,如图:

级别: 新手上路
UID: 235704
精华: 0
发帖: 100
威望: 1
霏币: 391
活跃度: 101
技术分: 0
交易值: 0
在线时间: 9(小时)
注册时间: 2020-06-28
最后登录: 2020-07-18
3楼  发表于: 2020-06-28 16:59:51
试一下管道操作符 每行后面加 >>ls.txt
把书读薄了
技术求助区
级别: 霏凡版主

UID: 32760
精华: 0
发帖: 10170
威望: 12597
霏币: 116136.9
活跃度: 10493
技术分: 0
交易值: 0
在线时间: 7333(小时)
注册时间: 2004-08-31
最后登录: 2020-10-20
4楼  发表于: 2020-06-29 08:38:29
楼上各位,能否帮测试后再来回复,谢谢!
级别: 霏凡贵宾

UID: 25279
精华: 0
发帖: 6312
威望: 8416
霏币: 14350.2
活跃度: 6777
技术分: 48
交易值: 0
在线时间: 4671(小时)
注册时间: 2004-08-16
最后登录: 2020-10-20
5楼  发表于: 2020-06-29 09:23:54
首先要保证你原来的代码是能正常运行的(最好以管理员身份运行),如果没问题,可能与powershell、FTP登录有兼容性问题
级别: 霏凡贵宾

UID: 25279
精华: 0
发帖: 6312
威望: 8416
霏币: 14350.2
活跃度: 6777
技术分: 48
交易值: 0
在线时间: 4671(小时)
注册时间: 2004-08-16
最后登录: 2020-10-20
6楼  发表于: 2020-06-29 09:34:11
还有一个方法,是用vbs调用bat实现隐藏:

Set ws=CreateObject("Wscript.Shell")
ws.run "cmd /c 批处理文件.bat",vbhide

把以上代码保存为.vbs文件运行
把书读薄了
技术求助区
级别: 霏凡版主

UID: 32760
精华: 0
发帖: 10170
威望: 12597
霏币: 116136.9
活跃度: 10493
技术分: 0
交易值: 0
在线时间: 7333(小时)
注册时间: 2004-08-31
最后登录: 2020-10-20
7楼  发表于: 2020-06-30 11:07:44
引用
引用第6楼朴の子于2020-06-29 09:23发表的  :
首先要保证你原来的代码是能正常运行的(最好以管理员身份运行),如果没问题,可能与powershell、FTP登录有兼容性问题


请问批处理以管理员身份运行,怎么写语句。若能用Serv-u加个ftp实测下,就更好了。这个批处理在7x64下测试通过的,就是不能隐藏ftp运行.
[ 此帖被peijunyu在2020-06-30 12:11重新编辑 ]
走自己的路,开心就好!
级别: 资深会员
UID: 235528
精华: 0
发帖: 165
威望: 3001
霏币: 8504
活跃度: 166
技术分: 0
交易值: 0
在线时间: 9(小时)
注册时间: 2020-06-28
最后登录: 2020-08-18
8楼  发表于: 2020-06-30 11:51:57
管理提醒: (peijunyu) 请勿灌水! (2020-06-30 12:11)
进来学习一下知识
[quote]
级别: 霏凡贵宾

UID: 25279
精华: 0
发帖: 6312
威望: 8416
霏币: 14350.2
活跃度: 6777
技术分: 48
交易值: 0
在线时间: 4671(小时)
注册时间: 2004-08-16
最后登录: 2020-10-20
9楼  发表于: 2020-06-30 17:57:39
引用
引用第8楼peijunyu于2020-06-30 11:07发表的  :


请问批处理以管理员身份运行,怎么写语句。若能用Serv-u加个ftp实测下,就更好了。这个批处理在7x64下测试通过的,就是不能隐藏ftp运行.


把下面这6行置于所有语句前面:
@echo off
pushd "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
:Admin
popd

我不玩FTP,没有条件实测;我的机子,通常是把UAC拉到最下面的,所以也没办法测试管理员权限。
级别: 新手上路
UID: 235704
精华: 0
发帖: 100
威望: 1
霏币: 391
活跃度: 101
技术分: 0
交易值: 0
在线时间: 9(小时)
注册时间: 2020-06-28
最后登录: 2020-07-18
10楼  发表于: 2020-07-01 11:40:17



测试通过
把书读薄了
技术求助区
级别: 霏凡版主

UID: 32760
精华: 0
发帖: 10170
威望: 12597
霏币: 116136.9
活跃度: 10493
技术分: 0
交易值: 0
在线时间: 7333(小时)
注册时间: 2004-08-31
最后登录: 2020-10-20
11楼  发表于: 2020-07-01 17:25:23
引用
引用第10楼朴の子于2020-06-30 17:57发表的  :


把下面这6行置于所有语句前面:
@echo off
pushd "%~dp0"
.......

运行出错
级别: 霏凡贵宾

UID: 25279
精华: 0
发帖: 6312
威望: 8416
霏币: 14350.2
活跃度: 6777
技术分: 48
交易值: 0
在线时间: 4671(小时)
注册时间: 2004-08-16
最后登录: 2020-10-20
12楼  发表于: 2020-07-02 08:10:54
推荐你去这里咨询一下,批处理的大牛都在这里:http://www.bathome.net/index.php

我只是把批处理当作处理日常简单事务的工具,如果太伤脑筋我会换一种处理方式或干脆放弃。
把书读薄了
技术求助区
级别: 霏凡版主

UID: 32760
精华: 0
发帖: 10170
威望: 12597
霏币: 116136.9
活跃度: 10493
技术分: 0
交易值: 0
在线时间: 7333(小时)
注册时间: 2004-08-31
最后登录: 2020-10-20
13楼  发表于: 2020-07-02 09:31:28
引用
引用第13楼朴の子于2020-07-02 08:10发表的  :
推荐你去这里咨询一下,批处理的大牛都在这里:http://www.bathome.net/index.php

我只是把批处理当作处理日常简单事务的工具,如果太伤脑筋我会换一种处理方式或干脆放弃。

谢谢!