Board logo

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

作者: zhuan1688    时间: 2022-3-17 15:41     标题: 【已解决】求一键调整域名顺序的bat命令

本帖最后由 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这样的国别域名,格式不统一。
不知能否实现,恳请各位老师指教,无比感激
作者: Batcher    时间: 2022-3-17 16:26

回复 1# zhuan1688


    最多只有两个点是吗?
作者: zhuan1688    时间: 2022-3-17 16:29

本帖最后由 zhuan1688 于 2022-3-17 16:32 编辑
回复  zhuan1688


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



    您好,管理员大大,最多三个.,如果三个点不好处理,两个点的也行,我把三个点的数据剔除
作者: for_flr    时间: 2022-3-17 16:44

本帖最后由 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. }
复制代码

作者: qixiaobin0715    时间: 2022-3-17 16:51

本帖最后由 qixiaobin0715 于 2022-3-18 12:03 编辑

!!!!!!
作者: 5i365    时间: 2022-3-17 17:14

本帖最后由 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. }
复制代码

作者: 5i365    时间: 2022-3-17 17:56

回复 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. }
复制代码

作者: 5i365    时间: 2022-3-17 18:01

本帖最后由 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. }
复制代码

作者: Batcher    时间: 2022-3-18 13:30

回复 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"
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2