@echo off & title 根据文件夹名生成相关文本 By 依梦琴瑶
cd /d %~dp0 & color 0a
setlocal enabledelayedexpansion
::设置要处理的目录路径,如果直接处理当前目录,请留空
set DirPath=AAA
::设置文件一的输出路径
set File_A=%cd%\1.txt
::设置文件二的输出路径
set File_B=%cd%\2.txt
:::::主代码执行区:::::
if defined DirPath (
if not exist "%DirPath%" (
echo 您预设的路径不存在,请按任意键退出后重新设置。
goto End
)
cd /d "%DirPath%"
)
(echo 参数^|^|^|^|价格^|^|^|^|照片)>File_A_TMP
(echo 产品^|^|^|^|尺寸^|^|^|^|照片)>File_B_TMP
for /d %%a in (*) do (
set "Str=%%~nxa"
for /f "tokens=1-4" %%b in ("%%~nxa") do (
set "Number=%%~b"
set "Goods=%%~c"
set "Size=%%~d"
set "Price=%%~e"
)
call :GetJpgPath "%%~fa" JpgPath
if not defined JpgPath set JpgPath=没有图片文件
>>File_A_TMP echo !Number:~,5! !Goods! !Size!^|^|^|^|!Price!^|^|^|^|!JpgPath!
>>File_B_TMP echo !Goods!^|^|^|^|!Size!^|^|^|^|!JpgPath!
)
for /f "skip=1 tokens=1 delims=[]" %%a in ('find /n "::SortingListVBS::" "%~0"') do set Line=%%~a
more +%Line% "%~0">Sorting.VBS
(cscript //nologo //e:jscript "Sorting.VBS" < File_A_TMP)>"%File_A%"
(cscript //nologo //e:jscript "Sorting.VBS" < File_B_TMP)>"%File_B%"
del /f/q File_?_TMP Sorting.VBS
cls & echo 已生成文本,请按任意键退出
:End
pause>nul & exit
:GetJpgPath
set "%~2="
for /f "delims=" %%i in ('dir /a-d/s/b/on "%~1\*.jp*g" 2^>nul') do (
set "%~2=%%~i"
goto :eof
)
goto :eof
::SortingListVBS::
var i = 0, arr = [], max = [];
var reg = /[^\x00-\xff]/g;
while(!WSH.StdIn.AtEndOfStream){
var strLine = WSH.StdIn.ReadLine();
if(!/^\s*$/.test(strLine)) {
arr[i] = strLine.split('||');
for(var j=0; j<arr[i].length; j++) {
var len = arr[i][j].replace(reg, '..').length;
if(!max[j] || len > max[j]) max[j] = len;
}
i++;
}
}
for(var i=0; i<arr.length; i++) {
var s = '';
for(var j=0; j<arr[i].length; j++) {
var len = max[j] - arr[i][j].replace(reg, '..').length;
var space = ' ';
for (var k=0; k<len; k++) space += ' ';
s += arr[i][j] + space;
}
WScript.Echo(s);
}
希望这个代码符合您的要求。
以下为生成后的文本效果:
