找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19876|回复: 8

[文本处理] 【已解决】求一键调整域名顺序的bat命令

[复制链接]
发表于 2022-3-17 15:41:12 | 显示全部楼层 |阅读模式
本帖最后由 zhuan1688 于 2022-3-18 09:26 编辑

谢谢各位老师指教,for_flr老师的代码经过5i365老师精简,速度超级快再次感谢各位老师

有一个TXT文档,里面有N个域名,一行一个,但都是反向域名,求一个bat,一键将这些反向域名调整成正常域名。
如:
net.A1
cn.com.A2
be.A3
kr.co.A4
uk.gov.A5
变成
A1.net
A2.com.cn
A3.be
A4.co.kr
A5.gov.uk
有些是com这样的国际域名,有些是com.cn这样的国别域名,格式不统一。
不知能否实现,恳请各位老师指教,无比感激
发表于 2022-3-17 16:26:01 | 显示全部楼层
回复 1# zhuan1688


    最多只有两个点是吗?
 楼主| 发表于 2022-3-17 16:29:29 | 显示全部楼层
本帖最后由 zhuan1688 于 2022-3-17 16:32 编辑
回复  zhuan1688


    最多只有两个点是吗?
Batcher 发表于 2022-3-17 16:26



    您好,管理员大大,最多三个.,如果三个点不好处理,两个点的也行,我把三个点的数据剔除
发表于 2022-3-17 16:44:02 | 显示全部楼层
本帖最后由 for_flr 于 2022-3-17 16:58 编辑
  1. #@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit /b"
  2. foreach($line in gc a.txt){
  3.   $x=@()
  4.   $s=$line.split('.')
  5.   ($s.count-1)..0|%{
  6.     $x+=$s[$_]
  7.     if($_ -eq 0){$x -join '.' |tee new_a.txt -append}
  8.   }
  9. }
复制代码

评分

参与人数 1技术 +1 收起 理由
zhuan1688 + 1 感谢,完美解决

查看全部评分

发表于 2022-3-17 16:51:16 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-3-18 12:03 编辑

!!!!!!
发表于 2022-3-17 17:14:54 | 显示全部楼层
本帖最后由 5i365 于 2022-3-17 17:16 编辑

回复 4# for_flr


    感谢大侠分享, 我精简了一下

  1. #@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit
  2. foreach ($line in gc a.txt)
  3. {
  4.         $x = @()
  5.         $s = $line.split('.')
  6.         ($s.count - 1) .. 0 | %{
  7.                 $x += $s[$_]
  8.         }
  9.         $x -join '.' >>ok.txt
  10. }
复制代码
发表于 2022-3-17 17:56:11 | 显示全部楼层
回复 4# for_flr


大侠好, 我又精简了一下, 现在相对好理解一些了,
  1. #@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit
  2. foreach ($line in gc a.txt)
  3. {
  4.         $x = @()
  5.         $s = $line.split('.')
  6.         $x += $s[($s.count - 1) .. 0]
  7.         $x -join '.' >>ok.txt
  8. }
复制代码
发表于 2022-3-17 18:01:24 | 显示全部楼层
本帖最后由 5i365 于 2022-3-17 18:03 编辑

回复 4# for_flr


  又精简了一下, 这次应该是极致精简了
  1. #@&cls&powershell "gc %~s0|out-string|iex"&pause&exit
  2. gc a.txt |
  3. %{
  4.         $x = @()
  5.         $s = $_.split('.')
  6.         $x += $s[($s.count - 1) .. 0]
  7.         $x -join '.' >>ok.txt
  8. }
复制代码

评分

参与人数 1技术 +1 收起 理由
zhuan1688 + 1 速度超级快,谢谢两位大侠

查看全部评分

发表于 2022-3-18 13:30:05 | 显示全部楼层
回复 3# zhuan1688


处理一到三个点的情况,纯BAT不调用PowerShell或其他脚本:
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "tokens=1-4 delims=." %%a in ('type "1.txt"') do (
  4.     if "%%d" neq "" (
  5.         set /p =%%d.<nul
  6.     )
  7.     if "%%c" neq "" (
  8.         set /p =%%c.<nul
  9.     )
  10.     echo,%%b.%%a
  11. ))>"2.txt"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 07:17 , Processed in 0.021768 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表