Skip to content

BAT脚本整理

切换到脚本所在目录

v
cd /d %~dp0

获取当前路径

powershell
cd %cd%

bat隐藏窗口

powershell
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::下面是原本的代码

清除

powershell
del /Q /F logs\*

/q:安静模式。删除全局通配符时,不要求确认

/f:强制删除只读文件

其它

设置变量

powershell
SET 变量名=

获取当前时间

powershell
SET YYYY=%DATE:~0,4%
SET MM=%DATE:~5,2%
SET DD=%DATE:~8,2%
SET HH=%TIME:~0,2%
SET MI=%TIME:~3,2%
SET SS=%TIME:~6,2%

echo %YYYY%-%MM%-%DD% %HH%:%MI%:%SS%

判断文件存在

powershell
SET file1=D:\cache.csv

if exist "%file%" (
    echo 文件存在
) else (
    echo %file% 文件不存在
)

监听特定的字符串在文件中出现

powershell
SET log8080=D:\apache-tomcat-8.5.24\logs\catalina.2024-09-09.log

:: 等待Tomcat启动并监听特定的字符串  
:WaitForString8080
timeout /t 5 >nul  
set "found="  
findstr /c:"org.apache.catalina.startup.Catalina.start Server startup in" "%log8080%" >nul && set "found=1"  
if not defined found goto WaitForString8080

禁用ping

内核参数禁用ping

# 这个命令会立即生效
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
# 启动
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all

只对当前环境生效,如果服务器重启时,这个设置就会失效

如果要永久生效,那么可以在配置文件/etc/sysctl.conf 增加参数net.ipv4.icmp_echo_ignore_all = 1,然后使用sysctl -p使之生效。也可以使用下面命令实现:

bash
# 禁止ICMP包通行
echo net.ipv4.icmp_echo_ignore_all=1 >>/etc/sysctl.conf
# 允许ICMP包通行
echo net.ipv4.icmp_echo_ignore_all=0 >>/etc/sysctl.con

防火墙禁用ping

bash
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
service iptables restart

可以直接设置iptables的配置文件,在/etc/sysconfig/iptables里面,直接修改.

bash
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT   #允许ping
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j DROP     #禁止ping

命令记录

U盘损坏

image-20250421163607282

e: 是U盘的盘符

bash
chkdsk e: /f