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
  • 按照您的意愿,重新组装部件

    回显“${fname}:${suffix}”


  • 或者,您可以使用一行
    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