如何使用cmd修改特定的代码行

时间:2019-03-22 07:19:45

标签: .net batch-file

我正在使用 cmd 脚本将资源从一个位置转移到另一个位置。它的工作正常。

现在,我已经需要在代码中进行更改,必须在其中注释一行代码而取消注释另一行。例如代码

public class SISConst
{
    //public const string SIS_APIKey = "AIzaSyrGUAXMezp86waQ";
    //public const string KPS_APIKEy = "AAAAqoT4xTw:APA91bHr3OS";
    //public const string Chanllengers_APIKey = "AIzaSyEfzyaCu8X22FmCXjOE";
    //public const string Trividyaa_APIKey = "AIzaSMFP4B3ddDXKLFrZxoKI";
    //public const string Global_APIKey = "AIzaSyCsZIgMKdxrDKtfVTI";
    //public const string Tulip_APIKey = "AIzaSyA1tP5iw7jTxW6JaliL-9Rc";
    //public const string Lmg_APIKey = "AIzaSyDYLKojBk-vVVDiq2DSH0";
    public const string RisingSun_APIKey = "AIzaSyAFh-wkAFYrXJHnrww"; 
}

编辑:我正在根据clientname.txt文件中提供的参数转移资源。在此文本文件中,仅提供客户端文件夹(如上述代码),如SIS,KPS,Global,Tulip。但是这里的情况有所不同,我只有一个名为SISConst的文件。客户参数应为_之前的变量名称。假设SIS_APIKeySISKPS_APIKeyKPS,依此类推。现在在客户端文件中,我会给这些名称KPSSIS等。我看不到其他线索。

到目前为止,我正在使用此代码移动资源

@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=*" %%A in (1.ClientName.txt) DO ( 

XCOPY "..\AppIcons\%%A\drawable-hdpi\*" "..\RisingSun\Resources\drawable-hdpi\" /E /F /R /Y /H >> "..\AppIcons\%%A\copy.log"

如何编写查询以进行代码修改,有可能吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

好,所以首先,批处理不是这项工作的最佳工具。如果文件内容以任何方式(附加/较少的空格等)更改,则将影响输出。所以这是一个完整的技巧。

注意,您需要替换实际文件的名称,其中包含我有FILENAMEHERE的公共类:

@echo off
setlocal enabledelayedexpansion
set "inputfile=D:\Arvind.ch\SIS\SIS_Product\SIS-Global-Dev\edTheSIS\RisingSun\MainActivity.cs"
for /f "tokens=*" %%A in (1.ClientName.txt) do (
    set "client=%%A"
    xcopy "..\AppIcons\%%A\drawable-hdpi\*" "..\RisingSun\Resources\drawable-hdpi\" /E /F /R /Y /H          >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\drawable-mdpi\*" "..\RisingSun\Resources\drawable-mdpi\" /E /F /R /Y /H          >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\drawable-xhdpi\*" "..\RisingSun\Resources\drawable-xhdpi\" /E /F /R /Y /H        >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\GoogleJsonFile\*" "..\RisingSun\" /E /F /R /Y /H     >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\LoginPageImage\*" "..\RisingSun\Resources\drawable\" /E /F /R /Y /H      >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\MenifestFile\*" "..\RisingSun\Properties\" /E /F /R /Y /H            >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\SplashScreenImage\*" "..\RisingSun\Resources\drawable\" /E /F /R /Y /H      >> "..\AppIcons\%%A\copy.log"
    xcopy "..\AppIcons\%%A\StringFile\*" "..\RisingSun\Resources\values\" /E /F /R /Y /H      >> "..\AppIcons\%%A\copy.log"

   )
    for /f "delims=" %%i in ('type "%inputfile%" ^| findstr "!client!"') do set "finder=%%i"
    for /f "tokens=*" %%a in ('type "%inputfile%" ^| find /v /n "" ^& break ^> "%inputfile%"') do (
              set "str=%%a"
              set "str=!str:*]=!"
              set "str=!str:            pushInfo.ServerkeyPush=         //pushInfo.ServerkeyPush!"
              if "!str!"=="!finder!" set "str=!str://pushInfo.ServerkeyPush=pushInfo.ServerkeyPush!"
             >>%inputfile% echo(!str!
)