window bat 学习
遍历当前文件
@echo off echo %cd% set work_path=%cd% echo %work_path% cd %work_path% rem for /f "delims=" %a in ('dir %cd%') do set FilePath=%~a rem echo %FilePath% for %%s in (.,*) do ( echo %%s ) pause
https://blog.csdn.net/zhanglh046/article/details/50529650
@echo off chcp 936 echo %cd% echo set svnvercmd=%~dp0\svnversion rem 该文件当前目录 set svncmd=%~dp0\svn %svncmd% update ..\ %svnvercmd% ..\ for /f " tokens=1 delims= " %%a in ('%svnvercmd% ..\') do set VER=%%a echo Current Version £º%VER% ---------------- echo #define APP_SVN_VER "%VER%" >svn_version.h rem pause
@echo off setlocal enabledelayedexpansion echo %cd% set work_path=%cd% rem echo %work_path% cd %work_path%for /d %%i in (L*) do ( set win32dir=%work_path%\%%i\trunk\release\win32\include set dstDir=%work_path%\winLib\include call :sub !win32dir! !dstDir! set win32dir=%work_path%\%%i\trunk\release\win32\lib set dstDir=%work_path%\winLib\lib call :sub !win32dir! !dstDir! ) pause :sub if not exist %2 ( echo 创建%2目录 md %2 ) for /r %1 %%b in (*.*) do ( rem echo %%b rem echo %2 rem 获取文件名称 SET "FILE_PATH_NO_EXT=%%~nxb" rem echo !FILE_PATH_NO_EXT! set dst=%2\!FILE_PATH_NO_EXT! set src=%%b rem echo !dst! rem echo !src! if not exist !dst! ( mklink !dst! !src! ) ) goto :eof
bat for循环嵌套
https://zhidao.baidu.com/question/376257987.html
如果您在批处理脚本中将 %%~nxF
的值赋给一个变量,并在之后尝试打印该变量的值,但没有看到预期的输出,可能是由于延迟扩展导致的。在批处理中,延迟扩展是一种特殊的变量处理方式,可以通过启用 enabledelayedexpansion
实现。
在使用延迟扩展时,需要使用 !
来包围变量名称,而不是 %
遍历Output文件夹下最新的lib文件
setlocal enabledelayedexpansion set "destinationDir=..\..\SDK_OS_SLG0812_B1\SDK_OS_SLG0812_B1\SDK_Files\lib_files" set "targetDir=Output" set "latestFile=" set "latestTimestamp=2021/05/01 17:48" for %%F in ("%targetDir%\*.lib") do ( set "currentFile=%%~F" for %%A in ("!currentFile!") do set "fileTimestamp=%%~tA" rem echo File name: %currentFile% rem echo File Timestamp1: %fileTimestamp% if "!fileTimestamp!" gtr "!latestTimestamp!" ( set "latestTimestamp=!fileTimestamp!" set "latestFile=%%~dpnxF" set "CurrFileName=%%~nF" rem set "CurrFolderName=%%~dpF" rem echo File 1 is newer than File 2. ) )
endlocal
setlocal enabledelayedexpansion
是Windows批处理脚本中的一个命令,用于启用延迟变量扩展。
在批处理脚本中,正常情况下,变量是在脚本的每行逐一解析的。这意味着,如果在一个代码块中(例如for
循环或if
语句)更改了一个变量的值,那么在同一个代码块内后续的行将仍然使用该变量的原始值。这可能导致意外行为或错误的结果。
启用了延迟变量扩展后,您可以使用!
符号而不是%
符号来访问变量,并且它们将在运行时扩展,而不是在解析时。这使得在代码块内更改变量的值并正确使用新值变得更容易。
加上setlocal enabledelayedexpansion 就是在运行过程中实时获取变量而不是旧变量