windows批處理之四:特殊的字串擷取及結合perl的操作
擷取字串在前面二中已經講過,現在回顧一下:
%str:~1%:表示擷取從第二個字元開始的所有後續字元
%str:~1,10%:表示擷取第二個字元開始,長度為10個字元的字串
下面,是特殊的字串擷取用法:
有個特殊的要求,假如有個檔名,叫: regonly1.bat
現在我想擷取他的檔案型別部分,即:.bat部分。該如何取?於是就有下面的用法:
%str:~-4%
那如何擷取檔名部分,即不包含檔案型別的那個部分呢?也就是說要取:regonly1幾個字元,則可以這麼做:
%str:~0,-4%
測試:
設定變數值:
C:\Documents and Settings\wanghf>set str=regonly1.bat
列印:
C:\Documents and Settings\wanghf>echo %str%
regonly1.bat
擷取字元後四位:
C:\Documents and Settings\wanghf>echo %str:~-4%
.bat
去掉字串中的後四位:
C:\Documents and Settings\wanghf>echo %str:~0,-4%
regonly1
下面是一個去除PL/SQL中註釋的指令碼:
@rem = '
@echo Modified by wanghf@2010-12-06
@echo Created by wanghf@2010-07-28
@echo ----------------------------------------
@echo Bug請聯絡我:wanghf@hundsun.com
@echo ----------------------------------------
@echo 說明:
@echo 本指令碼用於清除SQL型的註釋
@echo 以下情況符合:
@echo 1. 以“--”開始的行註釋
@echo 2. 以/*...*/包圍的塊註釋(包括任意換行)
@echo 3. 不會清除sql中的hint。如:/*+index*/
@echo 4. 會清除單引號中的行註釋(只刪除引號內的)
@echo ----------------------------------------
@echo off
set /p filename="輸入檔名:"
set encryfile=%filename:~0,-4%
perl -S cmtclear.bat %filename% > %encryfile%.encry
goto endofperl
@rem ';
#!/usr/bin/perl
use strict;
#use warnings;
my $str = "";
my $copy= "";
my $f = $ARGV[0];
my $flag;
open(FILE, "foreach $str(){
$copy = $str;
$str =~s/([^'-]*)[-]{2,}([^']*)/\1/g;
$str =~s/\/\*[^+]*\*\///g;
if ($str =~/\/\*[^+\/]+$/){
$flag=1;
}
if ($str =~/^[^\/+]+\*\//){
$flag=0;
}
if ($flag == 1 && $str !~/\/\*[^+\/]+$/){
$str ="";
}
$str =~s/\/\*[^+\/]+$//g;
$str =~s/^[^\/+]+\*\///g;
print $str;
}
close FILE;
exit (1);
__END__
: endofperl
中間巢狀了perl的程式碼部分。
%str:~1%:表示擷取從第二個字元開始的所有後續字元
%str:~1,10%:表示擷取第二個字元開始,長度為10個字元的字串
下面,是特殊的字串擷取用法:
有個特殊的要求,假如有個檔名,叫: regonly1.bat
現在我想擷取他的檔案型別部分,即:.bat部分。該如何取?於是就有下面的用法:
%str:~-4%
那如何擷取檔名部分,即不包含檔案型別的那個部分呢?也就是說要取:regonly1幾個字元,則可以這麼做:
%str:~0,-4%
測試:
設定變數值:
C:\Documents and Settings\wanghf>set str=regonly1.bat
列印:
C:\Documents and Settings\wanghf>echo %str%
regonly1.bat
擷取字元後四位:
C:\Documents and Settings\wanghf>echo %str:~-4%
.bat
去掉字串中的後四位:
C:\Documents and Settings\wanghf>echo %str:~0,-4%
regonly1
下面是一個去除PL/SQL中註釋的指令碼:
@rem = '
@echo Modified by wanghf@2010-12-06
@echo Created by wanghf@2010-07-28
@echo ----------------------------------------
@echo Bug請聯絡我:wanghf@hundsun.com
@echo ----------------------------------------
@echo 說明:
@echo 本指令碼用於清除SQL型的註釋
@echo 以下情況符合:
@echo 1. 以“--”開始的行註釋
@echo 2. 以/*...*/包圍的塊註釋(包括任意換行)
@echo 3. 不會清除sql中的hint。如:/*+index*/
@echo 4. 會清除單引號中的行註釋(只刪除引號內的)
@echo ----------------------------------------
@echo off
set /p filename="輸入檔名:"
set encryfile=%filename:~0,-4%
perl -S cmtclear.bat %filename% > %encryfile%.encry
goto endofperl
@rem ';
#!/usr/bin/perl
use strict;
#use warnings;
my $str = "";
my $copy= "";
my $f = $ARGV[0];
my $flag;
open(FILE, "foreach $str(
$copy = $str;
$str =~s/([^'-]*)[-]{2,}([^']*)/\1/g;
$str =~s/\/\*[^+]*\*\///g;
if ($str =~/\/\*[^+\/]+$/){
$flag=1;
}
if ($str =~/^[^\/+]+\*\//){
$flag=0;
}
if ($flag == 1 && $str !~/\/\*[^+\/]+$/){
$str ="";
}
$str =~s/\/\*[^+\/]+$//g;
$str =~s/^[^\/+]+\*\///g;
print $str;
}
close FILE;
exit (1);
__END__
: endofperl
中間巢狀了perl的程式碼部分。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12932950/viewspace-680967/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows批處理之五-for語句中的檔名擷取Windows
- bat 批處理字串操作BAT字串
- windows批處理之一:字串處理Windows字串
- 07 Windows批處理之檔案操作Windows
- windows刪除檔案的批處理操作Windows
- 使用awk批處理在字串中增加特殊符號字串符號
- iOS NSString 字串的特殊處理iOS字串
- [windows]批處理獲取時間的long型值Windows
- Windows 批處理之DATE命令的使用方法Windows
- Windows下統計埠連結數的批處理Windows
- 處理PHP中字串的常用操作及函式PHP字串函式
- Windows批處理命令Windows
- 字串擷取字串
- 05 Windows批處理中的字串和布林資料型別Windows字串資料型別
- shell 使用陣列及字串擷取陣列字串
- Windows批處理學習(二)——批處理(3)薦Windows
- windows bat系列11:for處理案例四 去掉字串中的空格WindowsBAT字串
- 08 Windows批處理之執行編譯後的程式Windows編譯
- 樹形結構的處理——組合模式(四)模式
- shell 擷取變數的字串變數字串
- Windows批處理檔案Windows
- PHP字串擷取PHP字串
- mysql 擷取指定的兩個字串之間的內容MySql字串
- Windows掃描埠連結數批處理薦Windows
- 【批處理學習筆記】第十九課:字串合併筆記字串
- 在linux中生成windows的批處理LinuxWindows
- windows cmt bat批處理中的註釋WindowsBAT
- Windows批處理中的變數和值Windows變數
- php字串擷取函式,支援中文擷取PHP字串函式
- Shell中的字串擷取介紹字串
- SQL Server擷取字串和處理中文技巧SQLServer字串
- Windows批處理命令專題Windows
- windows sql loader批處理WindowsSQL
- ABAP字串操作 擷取字元長度 取位數字串字元
- MySQL 字串函式:字串擷取MySql字串函式
- perl utf8 encoding decoding HTML::Entities Perl中字串編碼的處理EncodingHTML字串編碼
- Nginx和Perl的結合Nginx
- Windows批處理(cmd/bat)常用命令小結WindowsBAT