刘总的笔记小站

生活常识,娱乐搞笑,编程技巧,智能家居,深度学习,网络神经,数据挖掘

win常用的批处理bat语法和命令

windows和linux编写bash脚本的时候遇见条件,循环,语句遗忘时,都可以通过help for查询。


1,win系统cmd命令bat批处理语法

::批处理直接调用其他其他批处理脚本时,当前批处理之后的脚本将不再执行。
::批处理使用call调用其他批处理脚本,会阻塞等待被调用的批处理执行完毕之后继续执行。
::批处理使用start调用其他批处理脚本,重新开启一个cmd执行被调用的批处理,再直接执行之后的脚本。

::cmd执行bat的机制:cmd是读一句执行一句,何谓一句?
::一般的一行,for, if的整句,&、&&、|| 等由连接符连接的整行,()圆扩符之间的代码...都叫一句,嵌套格式
::启用了"延迟环境变量扩展"后,当CMD在解释涵有嵌套格式的命令时,他会把嵌套的命令依次执行依次再进行替换
@SETLOCAL ENABLEDELAYEDEXPANSION
@set var=test & echo %var%
@set /p p=input && echo %p%
@if %p%==aaa ( set p=bbb )
@if %p% leq 9 ( echo %p% ) else ( echo 9 )
@for /l %%i in (1,1,5) do ( set var=%%i && echo %var% )
:label
@if not exist x%cd%\test.log ( echo notexist ) 
@call tasklist | findstr cmd
@goto label


@echo off
setlocal enabledelayedexpansion
::setlocal disabledelayedexpansion

:INIT
echo "main init"
set PATH=c:\;%PATH%
set str=test
if %str%==test (
    set str=loop
    echo !str! if yes enabledelayedexpansion loop 
    echo %str% if not enabledelayedexpansion test 
)

::choice /t 90 /d y /n >nul
::tasklist /nh | find /i "msiexec.exe"
::tasklist /FI "STATUS eq RUNNING" | findstr msiexec 
::tasklist | find /i "msiexec.exe" && taskkill /im msiexec.exe /f
::msiexec /a "d:\python-2.7.15.msi" /qb TARGETDIR="D:\python32-2.7.15"

:MIAN
echo "main call"
echo "loop" > test.txt
type test.txt
FOR  %%i IN (A B C D) DO @echo [%%i]
for /f %%i in (test.txt) do echo %%i
FOR /F "usebackq tokens=1* delims==" %%i IN (`set`) DO @echo [%%i:%%j]
FOR /F "usebackq tokens=1,4 delims== " %%i IN (`dir`) DO @echo [%%i-%%j]
FOR /F "usebackq tokens=1,2 delims== " %%i IN (`tasklist`) DO @echo [%%i %%j]

FOR /F "usebackq tokens=1 delims== " %%i IN (`tasklist /FI "STATUS eq RUNNING"`) DO (
    if defined %%i echo %%i NG %%i not set yet
    echo ------%%i
)

:loop
set taskfind=0
tasklist /FI "STATUS eq RUNNING" | find /i "msiexec.exe" && set taskfind=1
if %taskfind%==1 (
    echo "main loop"
    if defined %errorlevel% echo %errorlevel%
    ping -n 6 127.0.0.1 > nul
    ::choice /t 6 /d y /n >nul
    goto :loop
)
echo "main exit"

goto END

:FAIL
echo "main fail"

:END
@pause


2,win如何制作msi安装程序的绿色版本

msiexec /a "d:\python-2.7.18.msi" /qb TARGETDIR="D:\python-2.7.18"
msiexec /a "d:\python-2.7.18.amd64.msi" /qb TARGETDIR="D:\python-2.7.18.amd64"


3,win批处理获取当前脚本路径

批处理命令获取当前盘符和当前目录
当前盘符:%~d0
当前路径:%cd%
当前执行命令行:%0
当前bat文件路径:%~dp0
当前bat文件短路径:%~sdp0

%ALLUSERSPROFILE% 本地 返回“所有用户”配置文件的位置。
%APPDATA% 本地 返回默认情况下应用程序存储数据的位置。
%CD% 本地 返回当前目录字符串。
%CMDCMDLINE% 本地 返回用来启动当前的 Cmd.exe 的准确命令行。
%CMDEXTVERSION% 系统 返回当前的“命令处理程序扩展”的版本号。
%COMPUTERNAME%  系统 返回计算机的名称。
%COMSPEC%  系统 返回命令行解释器可执行程序的准确路径。
%DATE%  系统 返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关date 命令的详细信息,请参阅 Date。
%ERRORLEVEL%  系统 返回上一条命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE%  系统 返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMEPATH%  系统 返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%HOMESHARE%  系统 返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER%  本地 返回验证当前登录会话的域控制器的名称。
%NUMBER_OF_PROCESSORS%  系统 指定安装在计算机上的处理器的数目。
%OS%  系统 返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
%PATH% 系统 指定可执行文件的搜索路径。
%PATHEXT% 系统 返回操作系统认为可执行的文件扩展名的列表。
%PROCESSOR_ARCHITECTURE%  系统 返回处理器的芯片体系结构。值:x86 或 IA64 基于Itanium
%PROCESSOR_IDENTFIER% 系统 返回处理器说明。
%PROCESSOR_LEVEL%  系统 返回计算机上安装的处理器的型号。
%PROCESSOR_REVISION% 系统 返回处理器的版本号。
%PROMPT% 本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。
%RANDOM% 系统 返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。
%SYSTEMDRIVE% 系统 返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。
%SYSTEMROOT%  系统 返回 Windows server operating system 根目录的位置。
%TEMP% 和 %TMP% 系统和用户 返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关time 命令的详细信息,请参阅 Time。
%USERDOMAIN% 本地 返回包含用户帐户的域的名称。
%USERNAME% 本地 返回当前登录的用户的名称。
%USERPROFILE% 本地 返回当前用户的配置文件的位置。
%WINDIR% 系统 返回操作系统目录的位置。


4,win系统在安装linux之后显示时间慢了八个小时如何处理。

使命regedit打开如下注册表,添加QWORD,将key改为RealTimeIsUniversal值为1即可。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
解释ubuntu等linux系统把从BIOS读取的时间认为是[全球统一时间],win认为是本地时间。


5,win下面命令行工具cmder修改终端提示符,定制自定义快捷命令。

以前通过修改C:\appwin\cmder_Full_Version_v1.2.9\cmder\vendor\init.bat的prompt生效
目前需要修改C:\appwin\cmder_v1.3.6\vendor\clink.lua的cmder_prompt变量才能生效
可以定制去掉换行,拉姆达修改为美元符号等等
通过配置文件C:\appwin\cmder_v1.3.6\config\user-aliases.cmd增加自定义简洁命令


6,win下面修改win格式文件

dism /Get-WimInfo /wimfile:F:\sources\boot.wim
dism /Get-WimInfo /wimfile:F:\sources\install.wim
# win 10 change Wim to Image witch is diff wint win7
#dism /Get-ImageInfo /ImagefileF:\sources\install.wim
#Dism /Mount-Image /ImageFile:boot.wim /Index:2 /MountDir:windows

dism /mount-wim /wimfile:F:\sources\boot.wim /index:2 /mountdir:windows
dism /image:windows /add-driver:drivers /recurse
dism /unmount-wim /mountdir:windows /commit

dism /mount-wim /wimfile:F:\sources\install.wim /index:1 /mountdir:windows
dism /image:windows /add-driver:drivers /recurse
dism /unmount-wim /mountdir:windows /commit


7,cmder默认的命令,去掉换行符,提示符λ改成$

cmder\vendor\init.bat文件中第15行中{lamb}修改为$
修改前:@prompt $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
修改后:@prompt $E[1;32;40m$P$S{git}{hg} $$ $S$E[0m

cmder\vendor\clink.lua文件中第41行中{lamb}修改为$
修改前:local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m"
修改后:local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m$ \x1b[0m"



发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
搜索
«   2024年9月   »
1
2345678
9101112131415
16171819202122
23242526272829
30
网站分类
最新留言
文章归档
网站收藏
友情链接
图标汇集
Powered by Z-BlogPHP

  • Copyright ©2021 @liuzong All rights reserved.
  • 陕ICP备17016542号