2024年10月22日 星期二

bat 讀檔存成另個檔案

在echo !line!時改成 echo(!line!

可以避免讀到空值時秀出echo is off的訊息

@echo off

setlocal enabledelayedexpansion
for /f "delims=:" %%a in ('findstr /n "AXX0000XXXA" "C:\Users\23456\Desktop\data.txt"') do (set /A find_line=%%a-1)
call :processFile < "C:\Users\23456\Desktop\data.txt" > target.txt
goto :EOF


:processFile

rem Duplicate the first %find_line%-1 lines
for /L %%i in (1,1,%find_line%) do (
   set /P "line="
   echo(!line!
)

rem Insert the additional line
type temp.txt

rem Copy the rest of lines
findstr ^^

exit /B

參考:windows - Why this code says echo is off? - Stack Overflow

2024年10月8日 星期二

使用command line 建立一個IIS web site

@SET /P A_ans=please type the Account for the Identity=

@SET /P P_ans=please type the password for the Identity=

powershell Expand-Archive "%~dp0Web.zip" -DestinationPath "%~dp0Web"

robocopy "%~dp0Web" "D:\temp" /E


REM add application pool

%WINDIR%\system32\inetsrv\appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='NewAppPool',autoStart='True',managedPipelineMode='Integrated']" /commit:apphost

%WINDIR%\system32\inetsrv\appcmd.exe set config /section:applicationPools /[name='NewAppPool'].processModel.identityType:SpecificUser /[name='NewAppPool'].processModel.userName:%A_ans% /[name='NewAppPool'].processModel.password:%P_ans% 


REM add app

%WINDIR%\system32\inetsrv\appcmd.exe add app /site.name:"Default Web Site" /path:/NewWeb /physicalPath:"D:\temp\Web" /applicationPool:NewAppPool


2023年12月28日 星期四

多執行緒使用方式

 C# .net


//Dec.28, 2023 modify this function to apply muti thread.

ThreadPool.QueueUserWorkItem(_ =>

{});


參考:

https://learn.microsoft.com/zh-tw/dotnet/api/system.threading.threadpool.queueuserworkitem?view=net-7.0&WT.mc_id=DOP-MVP-37580

https://blog.darkthread.net/blog/threadpool-thread-management/

2023年9月21日 星期四

2023年7月10日 星期一

2023年2月1日 星期三

SQL TEXT 資料太長 撈不完整

 [SQL]PRINT 超長的字串 | 亂馬客 - 點部落 (dotblogs.com.tw)

SQL TEXT 資料太長 撈不完整

參考上面網址的方式,用分段print的方式顯示


DECLARE @DYNAMIC_SQL NVARCHAR(MAX) --建立一個超過 4,000 字元的變數 SET @DYNAMIC_SQL = N'select 1 as one, 2 as two, 3 as three' WHILE LEN(@DYNAMIC_SQL) < 4000 BEGIN SET @DYNAMIC_SQL = @DYNAMIC_SQL + CHAR(13) + N'union all select 1 as one, 2 as two, 3 as three' END --一次最多只會PRINT 4,000 個字,所以後面的會被截斷 PRINT '--PRINT ALL' PRINT @DYNAMIC_SQL --要全部PRINT出來需要分開來PRINT --每4,000個字就PRINT出來 DECLARE @START_OFFSET INT DECLARE @LEN INT SET @START_OFFSET = 0 SET @LEN = 4000 PRINT '--PRINT BATCH' WHILE (@START_OFFSET < LEN(@DYNAMIC_SQL)) BEGIN PRINT SUBSTRING(@DYNAMIC_SQL, @START_OFFSET, @LEN) SET @START_OFFSET = @START_OFFSET + @LEN END --再把剩下的給PRINT出來 PRINT SUBSTRING(@DYNAMIC_SQL, @START_OFFSET, @LEN)