batch script handle folder

 使用batch 脚本遍历指定pattern的文件夹,替换file.json 值。

@echo off
::设置字符集
chcp 65001
set file_path=C:\dev\
set pattern=I????-?
set f=file.json
for /f "delims==" %%i in ('dir "%file_path%%pattern%" /ad/b/s') do (
  echo %%~dpi
  if not exist "%f%" (
	  echo JSON file "%f%" must be existed
	  pause
	  goto error
	 
	) else (
		set filepath="%%i"
		set fileParentpath="%%~dpi"
		setlocal enabledelayedexpansion
		echo !filepath:\=/!
		(
		echo {
		for /f "tokens=* delims=:" %%a in (%f%) do (
			
			set s=%%a
			if "!s:~1,9!" equ "file_path" (
				for /f "tokens=1* delims=:" %%b in ('echo !s!') do (				
					echo %%b:!filepath:\=/!,
				)
			)	
			if "!s:~1,9!" equ "file_name" (
				for /f "tokens=1* delims=:" %%b in ('echo !s!') do (				
					echo %%b:"%%~nxi",
				)
			)
			if "!s:~1,16!" equ "file_parent_path" (
				for /f "tokens=1* delims=:" %%b in ('echo !s!') do (				
					echo %%b:!fileParentpath:\=/!
				)
			) 
			
		)
		echo } )>temp.txt
		echo %f%
		move /y temp.txt %f%
     )
	  setlocal DISABLEDELAYEDEXPANSION		
		
	)
	call :invoke-ais-batch-bundle
	)
pause
goto end


:invoke-ais-batch-bundle
java -Dproperty.file=kafka.properties -jar ais-batch-bundle.jar createTriggerFile.xml
goto end

:error
set ERROR_CODE=1

:end
@endlocal & set ERROR_CODE=%ERROR_CODE%


cmd /C exit /B %ERROR_CODE%

file.json

{
"file_path":"C:/dev/BTS-160_demo_folder_structure/myfolder/subfolder/8³1²你好Sonderzeichen - BAY%95%!665!-&ffy88³1²23´/I1234-5",
"file_name":"I1234-5",
"file_parent_path":"C:/dev/BTS-160_demo_folder_structure/myfolder/subfolder/8³1²你好Sonderzeichen - BAY%95%!665!-&ffy88³1²23´/"
}

如果需要遍历文件夹下的文件:

set FILE_PATH=C:\dev\
set FILE_PATTERN=?-???
set JSON_FILE=file.json
for /r "%FILE_PATH%" %%i in ("%FILE_PATTERN%") do (
  1. 在CMD 中输入for /? 查看帮助。
  2. delims= https://www.jb51.net/article/17927.htm

  3. /b使用空格式(没有标题信息或摘要)

    /a显示具有指定属性的文件./ad表示显示目录

    (属性d目录,r只读文件,h隐藏文件,a准备存档的文件,s系统文件,-表示否的前缀)

    /s显示指定目录或要有子目录中的文件

    f:\指定目录名为f:\

  4. https://blog.csdn.net/tz2101/article/details/48209763

  5. @echo off
    echo start
    for /r %%i in (*.txt) do call call1.bat
    echo running call2
    echo end
    pause

     

  6. setlocal enabledelayedexpansion《=》setlocal DISABLEDELAYEDEXPANSION   在for 循环中开启!!变量输出

  7. filepath:\=/, 替换 \ to /

  8. call : 调用,主要与start 区别

  9. ::设置字符集chcp 65001为UTF-8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值