windows下脚本若干问题

要用windows下的自动代码生成工具,涉及一些按时间备份和路径处理的问题,发现windows下的cmd(bat)脚本命令非常不方便,这时候才觉得linux的好。不过还是找到一些方法,这里分享一下。


1. 获取当前路径 set "abc=%cd%"

本来linux下cd - 命令就可以解决的问题,在windows下得辗转好几条命令,其中最关键的是将当前路径的字符存为一个环境变量

还有几个在脚本中才能用的变量,下面几个命令如果在cmd下输入的话,除了%cd%外,其他是没有效果的。

echo 当前盘符:%~d0
echo 当前路径:%cd%
echo 当前执行命令行:%0
echo 当前bat文件路径:%~dp0
echo 当前bat文件短路径:%~sdp0


--wcd.bat---

@echo off
if '%*'=='' cd & exit /b
if '%*'=='-' (
    cd /d %OLDPWD%
    set OLDPWD=%cd%
) else (
    cd /d %*
    if not errorlevel 1 set OLDPWD=%cd%
)

--wcd.bat---


2. 获取当前系统时间 set



3. hudson下调用bat脚本容易出现屏显输出和系统输出冲突的问题,因此最好以如下方式调用


4. Replace String In File bat

@echo off
REM -- Prepare the Command Processor --
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
REM ::BatchSubstitude - parses a File line by line and replaces a substring"
REM ::syntax: BatchSubstitude.bat OldStr NewStr File
REM ::          OldStr [in] - string to be replaced
REM ::          NewStr [in] - string to replace with
REM ::          File   [in] - file to be parsed
REM :$changed 20100115
REM :$source http://www.dostips.com
IF "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
FOR /F "tokens=1,* delims=]" %%A IN ('"type %3|find /n /v """') DO (
    set "line=%%B"
    IF DEFINED line (
        call set "line=echo.%%line:%~1=%~2%%"
        FOR /F "delims=" %%X IN ('"echo."%%line%%""') DO %%~X
    ) ELSE echo.
)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值