Làm cách nào để chuyển các đối số vào một tệp loạt?

1191
Keng 2008-08-26 08:14.

Tôi cần chuyển ID và mật khẩu vào một tệp hàng loạt tại thời điểm chạy thay vì mã hóa cứng chúng vào tệp.

Đây là dòng lệnh trông như thế nào:

test.cmd admin [email protected] > test-log.txt

18 answers

1060
Greg Hewgill 2008-08-26 09:41.

Một mẹo hữu ích khác là sử dụng %*nghĩa là "tất cả". Ví dụ:

echo off
set arg1=%1
set arg2=%2
shift
shift
fake-command /u %arg1% /p %arg2% %*

Khi bạn chạy:

test-command admin password foo bar

tệp lô ở trên sẽ chạy:

fake-command /u admin /p password admin password foo bar

Tôi có thể có cú pháp hơi sai, nhưng đây là ý tưởng chung.

294
Keng 2008-09-19 02:26.

Đây là cách tôi đã làm điều đó:

@fake-command /u %1 /p %2

Đây là lệnh trông như thế nào:

test.cmd admin [email protected] > test-log.txt

Điều này %1áp dụng cho tham số đầu tiên %2(và đây là phần phức tạp) áp dụng cho tham số thứ hai. Bạn có thể có tối đa 9 tham số được truyền theo cách này.

148
thelsdj 2008-08-26 10:03.

Nếu bạn muốn xử lý các thông số bị thiếu một cách thông minh, bạn có thể làm như sau:

IF %1.==. GOTO No1
IF %2.==. GOTO No2
... do stuff...
GOTO End1

:No1
  ECHO No param 1
GOTO End1
:No2
  ECHO No param 2
GOTO End1

:End1
91
jeb 2011-03-31 12:16.

Truy cập các tham số hàng loạt có thể đơn giản với% 1,% 2, ...% 9 hoặc cũng có thể là% *,
nhưng chỉ khi nội dung đơn giản.

Không có cách nào đơn giản cho các nội dung phức tạp như "&"^&, vì không thể truy cập% 1 mà không tạo ra lỗi.

set  var=%1
set "var=%1"
set  var=%~1
set "var=%~1"

Các dòng mở rộng thành

set  var="&"&
set "var="&"&"
set  var="&"&
set "var="&"&"

Và mỗi dòng không thành công, vì một dòng &nằm ngoài dấu ngoặc kép.

Nó có thể được giải quyết bằng cách đọc từ một tệp tạm thời một phiên bản được chú ý của tham số.

@echo off
SETLOCAL DisableDelayedExpansion

SETLOCAL
for %%a in (1) do (
    set "prompt="
    echo on
    for %%b in (1) do rem * #%1#
    @echo off
) > param.txt
ENDLOCAL

for /F "delims=" %%L in (param.txt) do (
  set "param1=%%L"
)
SETLOCAL EnableDelayedExpansion
set "param1=!param1:*#=!"
set "param1=!param1:~0,-2!"
echo %%1 is '!param1!'

Bí quyết là bật echo onvà mở rộng% 1 sau một remcâu lệnh (cũng hoạt động với %2 .. %*).
Vì vậy, thậm chí "&"&có thể được lặp lại mà không tạo ra lỗi, như nó được nhận xét.

Nhưng để có thể chuyển hướng đầu ra của echo on, bạn cần hai vòng lặp for.

Các ký tự phụ * #được sử dụng để an toàn trước các nội dung như /?(sẽ hiển thị sự trợ giúp cho REM).
Hoặc dấu mũ ^ ở cuối dòng có thể hoạt động như một ký tự nhiều dòng, ngay cả sau dấu a rem.

Sau đó đọc thông số rem đầu ra từ tệp, nhưng cẩn thận.
FOR / F sẽ hoạt động khi tắt mở rộng bị trì hoãn, các nội dung khác bằng "!" sẽ bị phá hủy.
Sau khi loại bỏ các ký tự thừa trong param1, bạn đã có nó.

Và để sử dụng param1một cách an toàn, hãy bật tính năng mở rộng bị trì hoãn.

61
Frank Krueger 2008-08-26 08:16.

Đúng, và đừng quên sử dụng các biến như %%1khi sử dụng ifforvà băng đảng.

Nếu bạn quên dấu kép %, thì bạn sẽ thay thế trong các đối số dòng lệnh (có thể là null) và bạn sẽ nhận được một số thông báo lỗi khá khó hiểu.

53
DearWebby 2012-04-19 13:46.

Không cần phải phức tạp hóa nó. Nó chỉ đơn giản là lệnh% 1% 2 tham số, ví dụ,

@echo off

xcopy %1 %2 /D /E /C /Q /H /R /K /Y /Z

echo copied %1 to %2

pause

"Tạm dừng" hiển thị những gì tệp hàng loạt đã thực hiện và chờ bạn nhấn BẤT KỲ phím nào. Lưu nó dưới dạng xx.bat trong thư mục Windows.

Để sử dụng nó, hãy nhập, ví dụ:

xx c:\f\30\*.* f:\sites\30

Tệp lô này xử lý tất cả các thông số cần thiết, như chỉ sao chép các tệp mới hơn, v.v. Tôi đã sử dụng nó từ trước Windows. Nếu bạn muốn nhìn thấy tên của các tệp, khi chúng đang được sao chép, hãy bỏ qua Qtham số.

43
kodybrown 2017-07-13 17:32.

Gần đây, một người bạn đã hỏi tôi về chủ đề này, vì vậy tôi nghĩ tôi sẽ đăng cách xử lý các đối số dòng lệnh trong các tệp hàng loạt.

Kỹ thuật này có một chút chi phí như bạn sẽ thấy, nhưng nó làm cho các tệp hàng loạt của tôi rất dễ hiểu và nhanh chóng để thực hiện. Cũng như hỗ trợ các cấu trúc sau:

>template.bat [-f] [--flag] [/f] [--namedvalue value] arg1 [arg2][arg3][...]

Các jist của nó là có :init, :parse:maincác chức năng.

Ví dụ sử dụng

>template.bat /?
test v1.23
This is a sample batch file template,
providing command-line arguments and flags.

USAGE:
test.bat [flags] "required argument" "optional argument"

/?, --help           shows this help
/v, --version        shows the version
/e, --verbose        shows detailed output
-f, --flag value     specifies a named parameter value

>template.bat          <- throws missing argument error
(same as /?, plus..)
****                                   ****
****    MISSING "REQUIRED ARGUMENT"    ****
****                                   ****

>template.bat -v
1.23

>template.bat --version
test v1.23
This is a sample batch file template,
providing command-line arguments and flags.

>template.bat -e arg1
**** DEBUG IS ON
UnNamedArgument:    "arg1"
UnNamedOptionalArg: not provided
NamedFlag:          not provided

>template.bat --flag "my flag" arg1 arg2
UnNamedArgument:    "arg1"
UnNamedOptionalArg: "arg2"
NamedFlag:          "my flag"

>template.bat --verbose "argument #1" --flag "my flag" second
**** DEBUG IS ON
UnNamedArgument:    "argument #1"
UnNamedOptionalArg: "second"
NamedFlag:          "my flag"

template.bat

@::!/dos/rocks
@echo off
goto :init

:header
    echo %__NAME% v%__VERSION%
    echo This is a sample batch file template,
    echo providing command-line arguments and flags.
    echo.
    goto :eof

:usage
    echo USAGE:
    echo   %__BAT_NAME% [flags] "required argument" "optional argument" 
    echo.
    echo.  /?, --help           shows this help
    echo.  /v, --version        shows the version
    echo.  /e, --verbose        shows detailed output
    echo.  -f, --flag value     specifies a named parameter value
    goto :eof

:version
    if "%~1"=="full" call :header & goto :eof
    echo %__VERSION%
    goto :eof

:missing_argument
    call :header
    call :usage
    echo.
    echo ****                                   ****
    echo ****    MISSING "REQUIRED ARGUMENT"    ****
    echo ****                                   ****
    echo.
    goto :eof

:init
    set "__NAME=%~n0"
    set "__VERSION=1.23"
    set "__YEAR=2017"

    set "__BAT_FILE=%~0"
    set "__BAT_PATH=%~dp0"
    set "__BAT_NAME=%~nx0"

    set "OptHelp="
    set "OptVersion="
    set "OptVerbose="

    set "UnNamedArgument="
    set "UnNamedOptionalArg="
    set "NamedFlag="

:parse
    if "%~1"=="" goto :validate

    if /i "%~1"=="/?"         call :header & call :usage "%~2" & goto :end
    if /i "%~1"=="-?"         call :header & call :usage "%~2" & goto :end
    if /i "%~1"=="--help"     call :header & call :usage "%~2" & goto :end

    if /i "%~1"=="/v"         call :version      & goto :end
    if /i "%~1"=="-v"         call :version      & goto :end
    if /i "%~1"=="--version"  call :version full & goto :end

    if /i "%~1"=="/e"         set "OptVerbose=yes"  & shift & goto :parse
    if /i "%~1"=="-e"         set "OptVerbose=yes"  & shift & goto :parse
    if /i "%~1"=="--verbose"  set "OptVerbose=yes"  & shift & goto :parse

    if /i "%~1"=="--flag"     set "NamedFlag=%~2"   & shift & shift & goto :parse

    if not defined UnNamedArgument     set "UnNamedArgument=%~1"     & shift & goto :parse
    if not defined UnNamedOptionalArg  set "UnNamedOptionalArg=%~1"  & shift & goto :parse

    shift
    goto :parse

:validate
    if not defined UnNamedArgument call :missing_argument & goto :end

:main
    if defined OptVerbose (
        echo **** DEBUG IS ON
    )

    echo UnNamedArgument:    "%UnNamedArgument%"

    if defined UnNamedOptionalArg      echo UnNamedOptionalArg: "%UnNamedOptionalArg%"
    if not defined UnNamedOptionalArg  echo UnNamedOptionalArg: not provided

    if defined NamedFlag               echo NamedFlag:          "%NamedFlag%"
    if not defined NamedFlag           echo NamedFlag:          not provided

:end
    call :cleanup
    exit /B

:cleanup
    REM The cleanup function is only really necessary if you
    REM are _not_ using SETLOCAL.
    set "__NAME="
    set "__VERSION="
    set "__YEAR="

    set "__BAT_FILE="
    set "__BAT_PATH="
    set "__BAT_NAME="

    set "OptHelp="
    set "OptVersion="
    set "OptVerbose="

    set "UnNamedArgument="
    set "UnNamedArgument2="
    set "NamedFlag="

    goto :eof
33
rightcodeatrighttime 2014-03-14 20:02.
@ECHO OFF
:Loop
IF "%1"=="" GOTO Continue
SHIFT
GOTO Loop
:Continue

Lưu ý: IF "%1"==""sẽ gây ra sự cố nếu %1được đặt trong chính dấu ngoặc kép.

Trong trường hợp đó, hãy sử dụng IF [%1]==[]hoặc, chỉ trong NT 4 (SP6) và mới hơn, IF "%~1"==""để thay thế.

24

Hãy giữ điều này đơn giản.

Đây là tệp .cmd.

@echo off
rem this file is named echo_3params.cmd
echo %1
echo %2
echo %3
set v1=%1
set v2=%2
set v3=%3
echo v1 equals %v1%
echo v2 equals %v2%
echo v3 equals %v3%

Đây là 3 cuộc gọi từ dòng lệnh.

C:\Users\joeco>echo_3params 1abc 2 def  3 ghi
1abc
2
def
v1 equals 1abc
v2 equals 2
v3 equals def

C:\Users\joeco>echo_3params 1abc "2 def"  "3 ghi"
1abc
"2 def"
"3 ghi"
v1 equals 1abc
v2 equals "2 def"
v3 equals "3 ghi"

C:\Users\joeco>echo_3params 1abc '2 def'  "3 ghi"
1abc
'2
def'
v1 equals 1abc
v2 equals '2
v3 equals def'

C:\Users\joeco>
21
Amr Ali 2014-11-25 18:39.
FOR %%A IN (%*) DO (
    REM Now your batch file handles %%A instead of %1
    REM No need to use SHIFT anymore.
    ECHO %%A
)

Điều này lặp lại trên các tham số lô (% *) hoặc chúng được trích dẫn hoặc không, sau đó lặp lại từng tham số.

21
The Godfather 2019-10-18 23:24.

Trong tệp hàng loạt

set argument1=%1
set argument2=%2
echo %argument1%
echo %argument2%

%1%2trả về giá trị đối số thứ nhất và thứ hai tương ứng.

Và trong dòng lệnh, chuyển đối số

Directory> batchFileName admin [email protected] 

Đầu ra sẽ là

admin
[email protected]
20
Evan Kennedy 2016-02-17 14:24.

Tôi đã viết một script read_params đơn giản có thể được gọi dưới dạng một hàm (hoặc bên ngoài .bat) và sẽ đặt tất cả các biến vào môi trường hiện tại. Nó sẽ không sửa đổi các tham số ban đầu vì hàm đang được chỉnh sửa callvới một bản sao của các tham số ban đầu.

Ví dụ, cho lệnh sau:

myscript.bat some -random=43 extra -greeting="hello world" fluff

myscript.bat sẽ có thể sử dụng các biến sau khi gọi hàm:

call :read_params %*

echo %random%
echo %greeting%

Đây là chức năng:

:read_params
if not %1/==/ (
    if not "%__var%"=="" (
        if not "%__var:~0,1%"=="-" (
            endlocal
            goto read_params
        )
        endlocal & set %__var:~1%=%~1
    ) else (
        setlocal & set __var=%~1
    )
    shift
    goto read_params
)
exit /B

Hạn chế

  • Không thể tải các đối số không có giá trị như -force. Bạn có thể sử dụng -force=truenhưng tôi không thể nghĩ ra cách cho phép các giá trị trống mà không biết trước danh sách các tham số sẽ không có giá trị.

Changelog

  • 18/02/2016
    • Không còn yêu cầu mở rộng bị trì hoãn
    • Bây giờ hoạt động với các đối số dòng lệnh khác bằng cách tìm -trước các tham số.
10
CMS_95 2013-11-15 08:16.

Để tham chiếu đến một biến tập hợp trong dòng lệnh, bạn sẽ cần sử dụng %a%như vậy, ví dụ:

set a=100 
echo %a%  
rem output = 100 

Lưu ý: Điều này hoạt động cho Windows 7 pro.

8
Garret Wilson 2018-06-02 16:41.

Lấy cảm hứng từ câu trả lời ở nơi khác của @Jon, tôi đã tạo ra một thuật toán tổng quát hơn để trích xuất các tham số được đặt tên, giá trị tùy chọn và công tắc.

Hãy để chúng tôi nói rằng chúng tôi muốn triển khai một tiện ích foobar. Nó yêu cầu một lệnh ban đầu. Nó có một tham số tùy chọn --foonhận một giá trị tùy chọn (tất nhiên không thể là một tham số khác); nếu giá trị bị thiếu thì nó được mặc định là default. Nó cũng có một tham số tùy chọn --barnhận một giá trị bắt buộc . Cuối cùng, nó có thể lấy một cờ --bazkhông có giá trị cho phép. Ồ, và các thông số này có thể theo bất kỳ thứ tự nào.

Nói cách khác, nó trông như thế này:

foobar <command> [--foo [<fooval>]] [--bar <barval>] [--baz]

Đây là một giải pháp:

@ECHO OFF
SETLOCAL
REM FooBar parameter demo
REM By Garret Wilson

SET CMD=%~1

IF "%CMD%" == "" (
  GOTO usage
)
SET FOO=
SET DEFAULT_FOO=default
SET BAR=
SET BAZ=

SHIFT
:args
SET PARAM=%~1
SET ARG=%~2
IF "%PARAM%" == "--foo" (
  SHIFT
  IF NOT "%ARG%" == "" (
    IF NOT "%ARG:~0,2%" == "--" (
      SET FOO=%ARG%
      SHIFT
    ) ELSE (
      SET FOO=%DEFAULT_FOO%
    )
  ) ELSE (
    SET FOO=%DEFAULT_FOO%
  )
) ELSE IF "%PARAM%" == "--bar" (
  SHIFT
  IF NOT "%ARG%" == "" (
    SET BAR=%ARG%
    SHIFT
  ) ELSE (
    ECHO Missing bar value. 1>&2
    ECHO:
    GOTO usage
  )
) ELSE IF "%PARAM%" == "--baz" (
  SHIFT
  SET BAZ=true
) ELSE IF "%PARAM%" == "" (
  GOTO endargs
) ELSE (
  ECHO Unrecognized option %1. 1>&2
  ECHO:
  GOTO usage
)
GOTO args
:endargs

ECHO Command: %CMD%
IF NOT "%FOO%" == "" (
  ECHO Foo: %FOO%
)
IF NOT "%BAR%" == "" (
  ECHO Bar: %BAR%
)
IF "%BAZ%" == "true" (
  ECHO Baz
)

REM TODO do something with FOO, BAR, and/or BAZ
GOTO :eof

:usage
ECHO FooBar
ECHO Usage: foobar ^<command^> [--foo [^<fooval^>]] [--bar ^<barval^>] [--baz]
EXIT /B 1
  • Sử dụng SETLOCALđể các biến không thoát vào môi trường gọi.
  • Đừng quên khởi tạo các biến SET FOO=, v.v. trong trường hợp ai đó định nghĩa chúng trong môi trường gọi.
  • Sử dụng %~1để loại bỏ dấu ngoặc kép.
  • Sử dụng IF "%ARG%" == ""và không IF [%ARG%] == [][]không chơi sẽ ở tất cả với các giá trị kết thúc bằng dấu cách.
  • Ngay cả khi bạn SHIFTở trong một IFkhối, các vòng hiện tại chẳng hạn như %~1không được cập nhật vì chúng được xác định khi IFphân tích cú pháp. Bạn có thể sử dụng %~1%~2bên trong IFkhối, nhưng sẽ rất khó hiểu vì bạn có SHIFT. Bạn có thể đặt SHIFTở cuối khối cho rõ ràng, nhưng điều đó có thể bị lạc và / hoặc gây nhầm lẫn cho mọi người. Vì vậy, "bắt" %~1%~1bên ngoài khối có vẻ tốt nhất.
  • Bạn không muốn sử dụng một tham số thay cho giá trị tùy chọn của tham số khác, vì vậy bạn phải kiểm tra IF NOT "%ARG:~0,2%" == "--".
  • Chỉ cẩn thận SHIFTkhi bạn sử dụng một trong các tham số.
  • Thật SET FOO=%DEFAULT_FOO%đáng tiếc là mã trùng lặp , nhưng giải pháp thay thế sẽ là thêm một mã IF "%FOO%" == "" SET FOO=%DEFAULT_FOO%bên ngoài IF NOT "%ARG%" == ""khối. Tuy nhiên vì đây vẫn là bên trong IF "%PARAM%" == "--foo"khối, các %FOO%giá trị sẽ được đánh giá và thiết lập trước khi bạn bước vào khối, vì vậy bạn sẽ không bao giờ phát hiện rằng cả các --footham số đã có mặt và cũng%FOO%giá trị đã mất tích.
  • Lưu ý rằng ECHO Missing bar value. 1>&2sẽ gửi thông báo lỗi đến stderr.
  • Muốn có một dòng trống trong tệp hàng loạt Windows? Bạn phải sử dụng ECHO:hoặc một trong các biến thể.
4
SvenVP 2011-02-07 03:33.

Tạo một tệp lô mới (ví dụ: openclass.bat) và viết dòng này vào tệp:

java %~n1

Sau đó, đặt tệp loạt vào, giả sử, thư mục system32, đi đến tệp lớp Java của bạn, nhấp chuột phải, Thuộc tính, Mở bằng ..., sau đó tìm tệp lô của bạn, chọn nó và đó là ...

Nó làm việc cho tôi.

Tái bút: Tôi không thể tìm thấy cách đóng cửa sổ cmd khi đóng lớp Java. Còn bây giờ ...

4
It Wasn't Me 2019-02-12 06:44.

Để sử dụng vòng lặp lấy tất cả các đối số và trong lô thuần túy:

Obs: Để sử dụng mà không có:?*&<>


@echo off && setlocal EnableDelayedExpansion

 for %%Z in (%*)do set "_arg_=%%Z" && set/a "_cnt+=1+0" && (
     call set "_arg_[!_cnt!]=!_arg_!" && for /l %%l in (!_cnt! 1 !_cnt!
     )do echo/ The argument n:%%l is: !_arg_[%%l]!
 )

goto :eof 

Mã của bạn đã sẵn sàng để thực hiện điều gì đó với số đối số mà nó cần, như ...

 @echo off && setlocal EnableDelayedExpansion

 for %%Z in (%*)do set "_arg_=%%Z" && set/a "_cnt+=1+0" && call set "_arg_[!_cnt!]=!_arg_!"
 
 fake-command /u !_arg_[1]! /p !_arg_[2]! > test-log.txt
 
3
Amol Patil 2018-07-04 03:48.

Giải pháp đơn giản (mặc dù câu hỏi đã cũ)

Test1.bat

echo off
echo "Batch started"
set arg1=%1
echo "arg1 is %arg1%"
echo on
pause

CallTest1.bat

call "C:\Temp\Test1.bat" pass123

đầu ra

YourLocalPath>call "C:\Temp\test.bat" pass123

YourLocalPath>echo off
"Batch started"
"arg1 is pass123"

YourLocalPath>pause
Press any key to continue . . .

Nơi YourLocalPath là đường dẫn thư mục hiện tại.

Để đơn giản, hãy lưu trữ lệnh param trong biến và sử dụng biến để so sánh.

Nó không chỉ đơn giản để viết mà còn đơn giản để duy trì, vì vậy nếu sau này một số người khác hoặc bạn đọc kịch bản của bạn sau một thời gian dài, nó sẽ dễ dàng hiểu và duy trì.

Để viết mã nội dòng: xem các câu trả lời khác.

0
npocmaka 2020-11-10 00:20.

Các đối số được ghép nối

Nếu bạn muốn chuyển các đối số trong một cặp khóa-giá trị, bạn có thể sử dụng một cái gì đó như sau:

@echo off

setlocal enableDelayedExpansion

:::::  asigning arguments as a key-value pairs:::::::::::::
set counter=0
for %%# in (%*) do (    
    set /a counter=counter+1
    set /a even=counter%%2
    
    if !even! == 0 (
        echo setting !prev! to %%#
        set "!prev!=%%~#"
    )
    set "prev=%%~#"
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:: showing the assignments
echo %one% %two% %three% %four% %five%

endlocal

Và một ví dụ:

c:>argumentsDemo.bat one 1 "two" 2 three 3 four 4 "five" 5
1 2 3 4 5

Các biến xác định trước

Bạn cũng có thể đặt trước một số biến môi trường. Nó có thể được thực hiện bằng cách đặt chúng trong bảng điều khiển hoặc cài đặt chúng từ máy tính của tôi :

@echo off

if defined variable1 (
    echo %variable1%
)

if defined variable2 (
    echo %variable2%
)

và gọi nó như:

c:\>set variable1=1

c:\>set variable2=2

c:\>argumentsTest.bat
1
2

Tệp với các giá trị được liệt kê

Bạn cũng có thể trỏ đến một tệp nơi các giá trị cần thiết được đặt trước. Nếu đây là tập lệnh:

@echo off

setlocal
::::::::::
set "VALUES_FILE=E:\scripts\values.txt"
:::::::::::


for /f "usebackq eol=: tokens=* delims=" %%# in ("%VALUES_FILE%") do set "%%#"

echo %key1% %key2% %some_other_key%

endlocal

và tệp giá trị là:

:::: use EOL=: in the FOR loop to use it as a comment

key1=value1

key2=value2

:::: do not left spaces arround the =
:::: or at the begining of the line

some_other_key=something else

and_one_more=more

đầu ra của việc gọi nó sẽ là:

value1 value2 cái gì đó khác

Tất nhiên bạn có thể kết hợp tất cả các cách tiếp cận. Cũng kiểm tra cú pháp đối số , shift

Related questions

MORE COOL STUFF

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett chia tay chồng sau 3 ngày bên nhau và vẫn kết hôn với anh ấy 25 năm sau

Cate Blanchett đã bất chấp những lời khuyên hẹn hò điển hình khi cô gặp chồng mình.

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Tại sao Michael Sheen là một diễn viên phi lợi nhuận

Michael Sheen là một diễn viên phi lợi nhuận nhưng chính xác thì điều đó có nghĩa là gì?

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Hallmark Star Colin Egglesfield Các món ăn gây xúc động mạnh đối với người hâm mộ tại RomaDrama Live! [Loại trừ]

Ngôi sao của Hallmark Colin Egglesfield chia sẻ về những cuộc gặp gỡ với người hâm mộ ly kỳ tại RomaDrama Live! cộng với chương trình INSPIRE của anh ấy tại đại hội.

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Tại sao bạn không thể phát trực tuyến 'chương trình truyền hình phía Bắc'

Bạn sẽ phải phủi sạch đầu đĩa Blu-ray hoặc DVD để xem tại sao Northern Exposure trở thành một trong những chương trình nổi tiếng nhất của thập niên 90.

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

8 công dụng tuyệt vời của Baking Soda và Giấm

8 công dụng tuyệt vời của Baking Soda và Giấm

Bạn biết đấy, hai sản phẩm này là nguồn điện để làm sạch, riêng chúng. Nhưng cùng với nhau, chúng có một loạt công dụng hoàn toàn khác.

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Hạn hán, biến đổi khí hậu đe dọa tương lai của thủy điện Hoa Kỳ

Thủy điện rất cần thiết cho lưới điện của Hoa Kỳ, nhưng nó chỉ tạo ra năng lượng khi có nước di chuyển. Bao nhiêu nhà máy thủy điện có thể gặp nguy hiểm khi các hồ và sông cạn kiệt?

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Quyên góp tóc của bạn để giúp giữ nước sạch của chúng tôi

Tóc tỉa từ các tiệm và các khoản quyên góp cá nhân có thể được tái sử dụng như những tấm thảm thấm dầu và giúp bảo vệ môi trường.

Tận dụng lợi thế của việc bán hàng nhân Ngày của Cha này

Tận dụng lợi thế của việc bán hàng nhân Ngày của Cha này

Màn hình Samsung Galaxy S9 Plus. Chủ nhật này là Ngày của Cha⁠ — trong trường hợp nó khiến bạn suy nghĩ — và thay vì mua cho anh ấy một chiếc cà vạt trong năm nay, có lẽ đã đến lúc bạn mua cho anh ấy thứ mà anh ấy sẽ thực sự sử dụng.

Assassin's Creed Snuck Into Monster Hunter: World Last Night

Assassin's Creed Snuck Into Monster Hunter: World Last Night

Monster Hunter: World yêu thích các sự kiện chéo. Dù có nghĩa là hóa trang thành Dante của Devil May Cry, giả dạng Horizon: Zero Dawn's Aloy, hay chiến đấu với quái vật Final Fantasy, các nhiệm vụ sự kiện khác nhau của Thế giới được nâng cấp tự do so với các trò chơi khác.

Ava DuVernay Có Quà Tặng Ngày Của Mẹ cho Tất Cả Chúng Ta: Nếp Nhăn Thời Gian Sẽ Được Viết Lại Vào Cuối Tuần Ngày Của Mẹ!

Ava DuVernay Có Quà Tặng Ngày Của Mẹ cho Tất Cả Chúng Ta: Nếp Nhăn Thời Gian Sẽ Được Viết Lại Vào Cuối Tuần Ngày Của Mẹ!

Storm Reid, Oprah Winfrey, Mindy Kaling, Reese Witherspoon và Ava DuVernay tại buổi chiếu đặc biệt của A Wrinkle in Time tại Nhà hát Walter Reade ở Thành phố New York vào ngày 7 tháng 3 năm 2018 “Ava rất mong được nói chuyện với bạn,” một trong những người của Array dư luận viên nói qua điện thoại. (Array là tập thể phân phối, nghệ thuật và vận động chính sách của Ava DuVernay tập trung vào các bộ phim của người da màu và phụ nữ.

Nhiệm vụ bất khả thi 5 sẽ khôi phục niềm tin của bạn trong phim hành động Tentpole

Nhiệm vụ bất khả thi 5 sẽ khôi phục niềm tin của bạn trong phim hành động Tentpole

Mission Impossible: Rogue Nation bắt đầu ở một cấp độ khác. Theo nghĩa đen.

Edwin McCain ra mắt Grand Ole Opry: Quay cảnh hậu trường với nhạc sĩ 'I'll Be'

Edwin McCain ra mắt Grand Ole Opry: Quay cảnh hậu trường với nhạc sĩ 'I'll Be'

McCain, người đang làm việc cho một album mới, lần đầu tiên bước vào vòng kết nối vào tối thứ Sáu ở Nashville

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Forced to Borrow Paris' 'I Love Paris' Sweatshirt After 'Airline Loses All [My] Luggage'

Nicky Hilton Rothschild's luggage got lost, but luckily she has an incredible closet to shop: Sister Paris Hilton's!

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa

Kate Middleton dành một ngày bên bờ nước ở London, cùng với Jennifer Lopez, Julianne Hough và hơn thế nữa. Từ Hollywood đến New York và mọi nơi ở giữa, hãy xem các ngôi sao yêu thích của bạn đang làm gì!

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

17 tuổi bị đâm chết trong khi 4 người khác bị thương trong một cuộc tấn công bằng dao trên sông Wisconsin

Các nhà điều tra đang xem xét liệu nhóm và nghi phạm có biết nhau trước vụ tấn công hay không

Tôi viết như thế nào

Tôi viết như thế nào

Đối với tôi, mọi thứ là về dòng đầu tiên đó và nó sẽ đưa bạn đến đâu. Một số nhà văn bị điều khiển bởi cốt truyện, sự sắp xếp tinh tế của các quân cờ, trong khi những người khác bị lôi cuốn bởi một nhân vật và khả năng thực hiện một cuộc hành trình với một người bạn hư cấu mới.

Đường băng hạ cánh

Đường băng hạ cánh

Cuối hè đầu thu là mùa hoài niệm. Những chiếc đèn đường chiếu ánh sáng của chúng qua những con đường đẫm mưa, và những chiếc lá dưới chân - màu đỏ cam tắt trong bóng chạng vạng - là lời nhắc nhở về những ngày đã qua.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Hãy tưởng tượng tạo ra một chiến lược nội dung thực sự CHUYỂN ĐỔI. Nó có thể.

Vào năm 2021, tôi khuyến khích bạn suy nghĩ lại mọi thứ bạn biết về khách hàng mà bạn phục vụ và những câu chuyện bạn kể cho họ. Lùi lại.

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Sự mất mát của voi ma mút đã mở ra trái tim tôi để yêu

Vào ngày sinh nhật thứ 9 của Felix The Cat, tôi nhớ về một trong những mất mát lớn nhất trong cuộc đời trưởng thành của tôi - Sophie của tôi vào năm 2013. Tôi đã viết bài luận này và chia sẻ nó trên nền tảng này một thời gian ngắn vào năm 2013.

Language