将域名的“主体”与扩展名分开 - DOS shell

时间:2009-01-22 16:35:12

标签: string batch-file

我尝试了一切,但仍然失败了。我以为我得到了它,我将发布 作为我的最后一次尝试,但仍然不够好[足够]。

脚本正在传递三个参数。域名,用户名和密码 但问题是我需要以“域”+“。com”格式分隔域名。两个变量。
我尝试使用name.extension作弊来分割它,但它不能很好地工作。

检查简单代码:

@echo off
echo.
set domain=%~n1
set ext=%~x1
echo %DOMAIN%
echo %EXT%
echo.

当你尝试时,你得到:

D:\Scripts\test>test.bat domain.com

domain
.com

D:\Scripts\test>test.bat domain.co.uk

domain.co
.uk

首先显然是有效的,但这只是因为我能够欺骗我 DOS Shell中的字符串操作是一个痛苦的屁股。我或许可以说服 一个脚本编写器传递给我4个参数而不是3个...但是如果失败了......帮助!

2 个答案:

答案 0 :(得分:0)

如果你想自动化某些东西(如另一个答案中所述),我的解决方案是使用适当的工具。安装Perl运行时或其他您熟悉的东西。或者使用Windows power shell

此外,除非您为脚本提供有效顶级域名列表,否则没有语言,您的脚本可以决定是否应将test.co.uk拆分为文本和co.uk或测试.co和英国。唯一可行的可能性是确保只获得没有子域部分的二级域。在这种情况下,只需在第一个点分开。

BTW:我很想知道你为什么要在Windows shell脚本中自动创建网站。你没有做任何令人讨厌的事,是吗?

答案 1 :(得分:0)

Windows附带Windows Scripting Host,可让您运行javascript。

将批处理文件更改为:

@echo off
cscript //Nologo test.js %*

创建test.js:

if (WScript.Arguments.Length > 0) {
    var arg = WScript.Arguments.Item(0);
    var index = arg.indexOf('.');
    if (index != -1) {
        var domain = arg.substring(0, index);
        var ext = arg.substring(index);
        WScript.Echo(domain);
        WScript.Echo(ext);
    } else WScript.Echo("Error: Argument has no dots: " + arg);
} else WScript.Echo("Error: No argument given");

你可以使用它:

C:\Documents and Settings\Waqas\Desktop>test.bat domain.com
domain
.com

C:\Documents and Settings\Waqas\Desktop>test.bat domain.co.uk
domain
.co.uk

这就是我认为你想要的。