linux批处理中删除字符串,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的代码部分。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12932950/viewspace-680967/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值