工具

  • clink: 提供类似 bash 的行编辑功能

CMD 默认编码修改

前不知道怎么改的,CMD 的代码页被默认设置成了 65001

但我右击 CMD 标题,选择‘默认值’,显示默认却是 936,但为何每次打开都是 65001 呢

方法一:

修改注册表 上网找到设置默认值的方法

  1. win 键+R 打开“运行”对话框,输入 regedit 打开注册表编辑器。
  2. 找到 [HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
  3. 修改”CodePage”=dword:000003a8(或者将进制改为十进制,然后输入 936 就可以了)

注: 十六进制”000003a8″或十进制”936″,表示“936 (ANSI/OEM – 简体中文 GBK)”。

但我通过以上方法设置为 936 后,重启电脑,打开 CMD 依然是 65001,但此时注册表设置默认值是 936

右击 CMD 标题,选择’属性‘,修改一下字体大小,然后再修改回来;关闭 CMD,再打开,这次默认是 936 了

当然,你也可以每次都手动输入 chcp 936(或 65001)

网上查到还可以写一个批处理文件:

方法二:

复写 cmd.exe 程序

命名为:cmdd.bat ,可以把文件放在桌面,以后双击打开,或者

放在%SystemRoot%§ystem32\目录下,win + r ->输入 cmd

文件内容:

1
2
3
4
@echo off
echo 这是复写cmd
chcp 936 >nul
call %SystemRoot%\System32\cmd.exe

以后在运行框输入 cmd 就可以打开 936 的 CMD 窗口了

参考: http://zhidao.baidu.com/link?url=EWuNk6n3RXIrEwnFd7I61aQ_s6neO7z-AApxU0mYWg3fpyij7jVE_ohU68xPNZnG-758IO7m9RXmGD2UdyoH5sZ-I36eV4nOiPtcrjhZ3ha http://blog.virtao.org/articles/53.html

http://blog.useasp.net/archive/2012/04/24/how_to_use_UTF8_encoding_in_Windows_CMD.aspx

方法三:

绝对有效。 永久修改代码页

  1. 打开注册表 开始–>运行–>regedit
  2. 找到 [HKEY_LOCAL_MACHINE§oftware\Microsoft\Command Processor], 新建一个项目 Autorun
  3. 内容为:chcp 65001

注册表文件: inject_autorun.reg

1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"AutoRun"="D:\\Documents\\WindowsPowerShell\\cmd\\autorun.cmd"

autorun.cmd

1
2
3
@echo off
chcp 65001
set PYTHONIOENCODING="utf-8"

PowerShell 配置文件

Windows PowerShell 配置文件

使用配置文件修改

  1. 可以用 Powershell 的配置文件(PROFILE)来实现。
  2. PROFILE 默认文件不存在,需要创建。

    1
    
    New-Item $PROFILE -ItemType File -Force

    此时会在文档下产生一个 ps1 文件,该文件会在 Powershell 启动的时候加载。 注:文件路径(win10, 2018.09.30) "D:\doc\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"

  3. 在这个配置文件里加上一句:

    1
    2
    
    chcp 65001
    [System.Console]::OutputEncoding=[System.Text.Encoding]::GetEncoding(65001)
  4. 当然,这里就涉及到了 Powershell 的执行策略(Execution Policy)的问题, 你需要设置允许 Powershell 执行脚本,我是用的 Unrestricted 策略:

    1
    
    Set-ExecutionPolicy Unrestricted

注:以上方法,试验有效。

了解配置文件

在 Windows PowerShell 中可以有四个不同的配置文件。 配置文件按加载顺序列出。较特定的配置文件优先于较不特定的配置文件(如果它们适用)。

%windir%\system32\WindowsPowerShell\v1.0\profile.ps1

此配置文件适用于所有用户和所有 shell。

%windir%\system32\WindowsPowerShell\v1.0\ Microsoft.PowerShell_profile.ps1

此配置文件适用于所有用户,但仅适用于 Microsoft.PowerShell shell。

%UserProfile%\My Documents\WindowsPowerShell\profile.ps1

此配置文件仅适用于当前用户,但会影响所有 shell。

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

此配置文件仅适用于当前用户和 Microsoft.PowerShell shell。

创建配置文件

在创建或者导入变量、别名或函数,或者添加 Windows PowerShell 管理单元时,这些元素只是添加到当前会话中。如果退出该会话或者关闭窗口,这些元素将丢失。

若要保存经常使用的变量、别名、函数和命令并使它们可以在每个 Windows PowerShell 会话中使用,请将它们添加到 Windows PowerShell 配置文件中。

还可以创建、共享和分发配置文件,以便在较大的企业中强制实施 Windows PowerShell 的统一视图。

Windows PowerShell 配置文件不是自动创建的。若要创建配置文件,请在指定位置中创建具有指定名称的文本文件。通常,将使用特定于用户、特定于 shell 的配置文件,这种配置文件称为 Windows PowerShell 用户配置文件。此配置文件的位置存储在 $profile 变量中。

若要显示 Windows PowerShell 配置文件的路径,请键入:

1
$profile

若要确定是否已经在系统上创建了 Windows PowerShell 配置文件,请键入:

1
test-path $profile

如果存在配置文件,则响应为 True:否则响应为 False。

若要创建 Windows PowerShell 配置文件,请键入:

1
new-item -path $profile -itemtype file -force

若要在记事本中打开配置文件,请键入:

1
notepad $profile

若要创建其他配置文件之一,如适用于所有用户和所有 shell 的配置文件,请键入:

1
2
notepad $profile
new-item -path $env:windir\System32\WindowsPowerShell\v1.0\profile.ps1 -itemtype file -force

仅当配置文件的路径和文件名与 $profile 变量中存储的路径和文件名 完全一致时,配置文件才有效。因此,如果在记事本中创建一个配置文件并保存它, 或者将一个配置文件复制到您的系统中,则一定要用 $profile 变量中指定的 文件名将该文件保存到在此变量中指定的路径下。

如果在记事本中创建配置文件,请将文件名用引号括起来,以保留 PS1 文件扩展名。例如:

"Microsoft.PowerShell_profile.ps1" 如果没有引号,则记事本会将 .txt 文件扩展名追加到文件,而 Windows PowerShell 将无法识别它。

使用配置文件存储日常使用的别名、函数和变量。一个非常有用的函数会在您最喜爱的文本编辑器中打开用户配置文件。例如,以下命令会创建一个名为 pro 的函数,该函数用于在记事本中打开用户配置文件。

1
function pro { notepad $profile }

有了设计良好的配置文件,就可以更轻松地使用 Windows PowerShell 和管理系统。

引用:Windows PowerShell 配置文件 | Microsoft Docs

PowerShell emacs 乱码解决方法

在 PowerShell 的配置文件中,添加以下代码

1
2
chcp 437
chcp 936

注:不足之处,emacs mode line, 还是有乱码。

后台运行问题

参考:Powershell equivalent of bash ampersand (&) for forking/running background pr…

cmd

  • start /b

    1
    
    start /b emacs -q

powershell

  • start-process -NoNewWindow yourcommand -ArgumentList "your command options"

    1
    2
    
    Start-Process -NoNewWindow emacs.exe -ArgumentList "-q"
    # "-nnw" ---alias of --> "-NoNewWindow"

注意:

  • 无论 cmd 还是 PowerShell, 只要关闭 cmd 或 PowerShell

    • 已打开的命令,都会自动退出
    • 比如上面的 emacs, 会被自动关闭。

在一个 bat 文件中调用别的 bat 文件

参考: windows - How to run multiple batch files with one master batch file - Super …

同步调用, call 运行

  • 上一个 bat 文件运行完成,在运行下一个
1
2
call /path/to/bat1.bat
call /path/to/bat2.bat

异步调用,start 运行

  • 不等待完成
1
2
start /path/to/bat1.bat
start /path/to/bat2.bat

netsh 命令

端口转发

添加端口转发

1
netsh interface portproxy add v4tov4 listenaddress=172.20.53.1 listenport=14941 connectaddress=172.20.53.2 connectport=3389
  • 解说

    • 把 172.20.53.1:14941 接收到的信息 转发给 172.20.53.2:3389
    • 即 14941 是 3389 的 代理
  • listen

    • 监听端口,即代理端口
  • connect

    • 被转发到的端口,即实际程序端口

删除端口转发

1
netsh interface portproxy delete v4tov4 listenaddress=172.20.53.1 listenport=14941
  • 只需要删除 listen 端口一侧

查看设置的转发

1
netsh interface portproxy show all

任务计划 task sheduler

修改 环境变量 Path

使用 setx

1
setx path "%path%;c:\directoryPath"

使用 pathman

  • 更方便

    • 调整的是系统的配置
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    rem * system
    rem 添加 add
    pathman /as directoryPath
    rem 删除 remove
    pathman /rs directoryPath
    
    rem * user
    pathman /au directoryPath
    pathman /ru directoryPath

cd 命令

如何在自动切换盘符

使用参数 cd /D

1
2
3
4
5
6
7
cd c:\Users			rem pwd: c:\Users

cd e:\Downloads			rem pwd 仍然是 c:\Users, 因为没有却换盘符
e:				rem 却换了盘符, pwd: e:\Dowloads


cd /D e:\Dowloads			rem pwd: e:\Dowloads, 因为 /D 会自动盘符