Windows 使用批处理脚本格式化文本文件
我有一个包含以下内容的文件Windows 使用批处理脚本格式化文本文件,windows,batch-file,dos,Windows,Batch File,Dos,我有一个包含以下内容的文件 http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_amdtronl_kernel.sql http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_amdtronl_utils.sql http://server.in.oracle.com:18080/svn/SVN_D
http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_amdtronl_kernel.sql
http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_amdtronl_utils.sql
http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_fundupload.sql
http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_amdtronl_main.sql
http://server.in.oracle.com:18080/svn/SVN_DEMO/branches/CI_TEST/AM/SQL/ampks_validate.sql
我需要一个批处理脚本来格式化文件,使其看起来如下所示
ampks_amdtronl_kernel.sql:AM/SQL/ampks_amdtronl_kernel.sql
ampks_amdtronl_utils.sql:AM/SQL/ampks_amdtronl_utils.sql
ampks_fundupload.sql:AM/SQL/ampks_fundupload.sql
ampks_amdtronl_main.sql:AM/SQL/ampks_amdtronl_main.sql
ampks_validate.sql:AM/SQL/ampks_validate.sql
这是文件名:Path/from/AM/till/filname
请引导。在您选择的循环中:
1.把这条线一分为二
suffix=${line##.*/AM} # this deletes everything before /AM so you have the suffix
fname=`basename $line` # this gives you the name of the file
或者,您可以使用一行
sed
来完成此操作。您可以使用awk来完成此操作。
或者使用简单文本编辑器替换为空字符串。
然后,我们可以将文件导入Excel,将字符串划分为“/”上的列
最后,使用concatenate函数(在Excel中)构建字符串
我更喜欢awk,你需要使用分割功能
awk“{split($0,a,“/”);打印a[10],':',a[6],'/',a[7],'/',a[8],'/',a[9],'/',a[10]}”`
拯救PowerShell:
param ([string] $inFileName, [string] $outFileName)
function Reformat-String
{
param (
[string] $str
)
$split = $str.Split("/")
return $split[9] + ":" + $split[7] + "/" + $split[8] + "/" + $split[9]
}
$file = Get-Content $inFileName
foreach($line in $file)
{
$newLine = Reformat-String $line
$newLine | Out-File $outFileName -Append
}
另存为“reformat.ps1”。调用为。\reformat.ps1 SourceFilePath DestinationFilePath您是在批处理文件中运行它,还是从cmd提示符运行它?这对我来说很好。那么应该很好,你用的是我的确切答案吗?如果没有,你可以在这里发布或者用你正在使用的批处理代码编辑你的问题。这个命令现在运行良好。但我也有其他文件夹,比如AM。SVN_DEMO/branchs/CI_TEST/MAIN/AM/SQL/ampks_validate.SQL SVN_DEMO/branchs/CI_TEST/MAIN/AM/AM/VW/amvw_fund_online_summary.VW SVN_DEMO/branchs/CI_TEST/MAIN/BC/SQL/bcpks_lcdefault.SQL如果我们在命令中给出AM/SQL,那么这个命令将不起作用。如果您有更多变量需要考虑,您需要问另一个问题最终的答案可能会大不相同。只需再问一个问题,详细说明可能发生的变化。谢谢。。我在(file.txt)do(echo%%~nxa:%%%a>>temp.txt)中使用了类似于for/f%%a的东西
for /f %%a in (file.txt) do echo %%~nxa:AM/SQL/%%~nxa >>temp.txt
del file.txt /f /q
ren temp.txt file.txt
@echo off
For /F "tokens=7-9 delims=/" %%a in (thefile.txt) do echo %%c:%%a/%%b/%%c