2017-03-02 12 views
6

Tôi tự hỏi nếu nó có thể thay đổi tiêu đề cửa sổ CMD để /?Set CMD tiêu đề để một dấu gạch chéo và một dấu hỏi (batch)

Tôi đã cố gắng sử dụng ^/?, ^/^?, và "/?" nhưng không ai trong số họ dường như hoạt động.

Bất kỳ ai cũng có bất kỳ đề xuất nào?

Cảm ơn

+0

'title" /? "' hoạt động cho tôi. Chỉnh sửa: oops chỉ nhận ra rằng nó hiển thị '" /? "' Với dấu ngoặc kép –

+1

trong PowerShell '[System.Console] :: Title =" /? "' Sẽ chỉ hoạt động, nhưng nếu chúng ta gọi powershell từ cmd nó sẽ bắt đầu subshell vì vậy chúng tôi không thể giữ môi trường cũ –

+1

Tôi phần nào tìm thấy một workaround. Nếu bạn gõ 'start" /? "' Nó sẽ mở một cửa sổ CMD với tiêu đề chính xác của '/?'. Thật không may, điều này cần phải mở một cửa sổ khác, và nó không thể chỉ được thay đổi trên bay. – ditheredtransparency

Trả lời

5

Có thể thêm một số ký tự vô hình.
Ý tưởng được lấy từ @npocmaka SO: How can I set set a title that start with coma,semicolon or equal sign?
Vấn đề của tiêu đề có dấu phẩy bắt đầu cũng có thể được giải quyết bằng ký tự LF, nhưng trong trường hợp của bạn, LF không giúp bất kỳ đâu trong chuỗi.

@echo off 

(set LF=^ 
%=empty=% 
) 

::Create a FS variable 
call :hexprint "0x1C" FS 

title /%FS%? 
exit /b 

:hexPrint string [rtnVar] 
    for /f eol^=^%LF%%LF%^ delims^= %%A in (
    'forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%~1"' 
) do if "%~2" neq "" (set %~2=%%A) else echo(%%A 
exit /b 
1
@ECHO OFF 
if "%~1"=="_SO42546112_" (
    shift 
) else (
    start "/?" cmd /D /K ""%~f0" "_SO42546112_"" 
    exit 
) 

Để khởi động một mớiCMD command prompt với /? tiêu đề cửa sổ, nhấp đúp trên .bat kịch bản.


Để chạy một kịch bản .bat với /? tiêu đề cửa sổ, sử dụng trên khái niệm ví dụ như sau:

@ECHO OFF 
SETLOCAL EnableExtensions 

rem self wrapper - start 
if "%~1"=="_SO42546112_" (
    shift 
) else (
    start "/?" cmd /D /C ""%~f0" "_SO42546112_" %*" 
    exit /B 
    rem ↑↑ omit the `/B` switch to close calling `cmd` window 
) 
rem self wrapper - end 

rem check whether the self wrapper works - start 
echo 1st "%~1" 
echo 2nd "%~2" 
echo 3rd "%~3" 
echo all %* 
pause 
rem check whether the self wrapper works - end 

rem original script continues here: 
+0

Ý tưởng hay để sử dụng 'bắt đầu' thay vì' tiêu đề' để thay đổi tiêu đề – jeb

Các vấn đề liên quan